@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

GridViewグリッドの再表示について教えて下さい。

1
投稿者投稿内容
未熟者
常連さん
会議室デビュー日: 2006/03/27
投稿数: 36
投稿日時: 2006-03-30 11:16
いつもお世話になっている未熟者といいます。
現在 VS2005 c#、SQL server2005にて開発をしています。
APPADPという名前のSqlDataSourceを指定したGridViewグリッド(GridView1)
にテーブル(worktbl)データを表示していて(GridView1には
テーブル項目以外にテンプレート列でチェックボックスを追加してあります)
確定ボタンをクリックするとチェックボックスにチェックされた行に対し
ストアドプロシージャでチェックされた行を削除しているのですが、更新後
のテーブルデータをGridViewグリッドに反映したいのですが、SqlDataSourceに
対してdatabindを実行しても反映されません。
超初歩的な質問で申し訳ないのですが、ご指導の方宜しくお願いします。

画面イメージはこんな感じです。
------------------------------------
承認  社員No 社員名
□   999999 xxxxxxxxx
□   111111 xxxxxxxxx
□ 222222 xxxxxxxxx


--------
| 確定 |
--------

----- ボタンのイベントです。
protected void kakuteiBtn_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(appds.ConnectionString );
SqlCommand cmmd = new SqlCommand();
conn.Open();
cmmd.Connection = conn;
cmmd.CommandType = CommandType.StoredProcedure;
cmmd.CommandText = "syainedt";
cmmd.Parameters.Add("@syainId", SqlDbType.Int);
for (cnt1 = 0; cnt1 < GridView1.Rows.Count; cnt1++)
{
GridViewRow selectrow = GridView1.Rows[cnt1];
if (((CheckBox)selectrow.Cells[0].Controls[1]).Checked)
{
cmmd.Parameters["@syainID"].Value = selectrow.Cells[1].Text;
cmmd.ExecuteNonQuery();
}
}
    this.appds.DataBind();
}
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2006-03-31 06:41
引用:

----- ボタンのイベントです。
protected void kakuteiBtn_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(appds.ConnectionString );
SqlCommand cmmd = new SqlCommand();
conn.Open();
cmmd.Connection = conn;
cmmd.CommandType = CommandType.StoredProcedure;
cmmd.CommandText = "syainedt";
cmmd.Parameters.Add("@syainId", SqlDbType.Int);
for (cnt1 = 0; cnt1 < GridView1.Rows.Count; cnt1++)
{
GridViewRow selectrow = GridView1.Rows[cnt1];
if (((CheckBox)selectrow.Cells[0].Controls[1]).Checked)
{
cmmd.Parameters["@syainID"].Value = selectrow.Cells[1].Text;
cmmd.ExecuteNonQuery();
}
}
    this.appds.DataBind();
}



ExecuteNonQueryが実行されているか確認してみたらどうでしょうか。

if (((CheckBox)selectrow.Cells[0].Controls[1]).Checked)
{
cmmd.Parameters["@syainID"].Value = selectrow.Cells[1].Text;
cmmd.ExecuteNonQuery();
}



_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
未熟者
常連さん
会議室デビュー日: 2006/03/27
投稿数: 36
投稿日時: 2006-03-31 09:16
Accessさん ありがとうございます。
ExecuteNonQueryの実行後のテーブルレコードを確認したところ、
チェックボックスにチェックを入れたテーブルレコードは正常に削除されていました。
一度、画面をメニューに戻してから再度、この画面を表示した場合は
削除したレコードは表示されません?

何かヒントがあれば宜しくお願いします。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-31 09:46
引用:

未熟者さんの書き込み (2006-03-30 11:16) より:

SqlDataSourceに対してdatabindを実行しても反映されません。


GridView に対して再バインドする必要があるのではないでしょうか?
GridView ということは ASP.NET 2.0 ですよね。
ポストバックはなされているとして、GridView の表示が単に更新していない?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-03-31 10:26
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=29338&forum=7&9

これと同じようなことでしょうか?
外していたら、ごめんなさい。
未熟者
常連さん
会議室デビュー日: 2006/03/27
投稿数: 36
投稿日時: 2006-03-31 10:48
じゃんぬねっとさん、田中さん ご指導ありがとうございました。
皆さんのご指摘の通り、GridViewに対してDataBIndを実行した所
更新後データの再表示ができました。

本当にありがとうございました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-31 10:54
引用:

R・田中一郎さんの書き込み (2006-03-31 10:26) より:

これと同じようなことでしょうか?


今回は GridView なので DataBind メソッドが使えると思います。

ところで、その ComboBox のスレッド、やっぱりタイミングの問題じゃないですか?
null で参照をいったん解放する必要があるように思えないんですよ。

と、続けるなら向こうのスレッドへ移動ですね...

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)