- PR -

DataGridのEditCommandColumnについて

1
投稿者投稿内容
UCM
会議室デビュー日: 2004/04/05
投稿数: 7
投稿日時: 2004-04-05 16:02
始めまして、いつも参考にさせていただいてます。

ASP.NET(VB.NET)で、DataGridのEditCommandColumnを使用して
Webからテーブルを更新する画面を作成しています。

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/Vbcon/html/vbwlkwalkthroughusingdatagridwebcontroltoreadwritedata.asp
↑のページを参考にしてDataGrid_EditCommandハンドラを作成し、
「編集」ボタンクリック時の処理を入れる所まではうまくいきました。

同様にしてDataGrid_UpdateCommandハンドラを作成して
「更新」ボタンクリック時の処理を記述したのですが、動いてくれません。
試しにDebugモードでブレークポイントをつけてみると通りぬけてしまいました。
(DataGrid_EditCommandのブレークポイントには止まってくれます)

ここが違ってる!という方、 同様の現象に心当たりのある方がいらっしゃいましたら
是非情報を頂きたく、よろしくお願いします。

↓edit,update部分のソースです
Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.EditCommand

DataGrid1.EditItemIndex = e.Item.ItemIndex
DataGrid1.DataBind()

End Sub

Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand

DtgGrid1.EditItemIndex = -1
DtgGrid1.DataBind()

---省略(update部分)--

End Sub
masas
常連さん
会議室デビュー日: 2002/05/23
投稿数: 25
投稿日時: 2004-04-05 17:53
DataGrid_UpdateCommandのイベントハンドラの定義が消えているってことはありませんか?。
(InitializeComponentメソッドの中に定義されている)
VS.NET(2003)ではたまに発生しますよ。
UCM
会議室デビュー日: 2004/04/05
投稿数: 7
投稿日時: 2004-04-05 18:13
返信ありがとうございます。

" Web フォーム デザイナで生成されたコード "にある↓の事でしょうか。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub

何も記述されてないみたいなのですが。。(汗)
UCM
会議室デビュー日: 2004/04/05
投稿数: 7
投稿日時: 2004-04-12 13:06
自己レスです。
自分では解決できませんでしたので、
上司に頼んでMicrosoftの技術サポートへ質問させてもらいました。
-回答-
「ポストバックイベント発生時、Page_Load() においてリバインド処理を行いますとDataGrid の再構築が行われたとみなされ、それまでのイベントが破棄されます」
だそうです。

よって以下の2項目を修正し、問題なく実行することが出来ました。
1. DataGrid の EnableViewState プロパティを True にする
2. Page_Load() 内で Not IsPostBackの場合のみ、DataBindを行う
お騒がせ致しました。
1

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