- - PR -
【ASP.NET】DataGridのイベントが実行されない現象
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2002-08-08 15:51
ボタンのClickイベント等で、DataGridの列の追加処理&Bindをした場合、DataGridのPageIndexChanged,ItmeCommand などのイベントが発生しない現象に悩まされていたのですが、マイクロソフト社より3週間越しで回答がきましたので、それを元に私の理解を交えて、私なりの言葉で書いておきます。
【原因】 DataGrid の列である BoundColumn は、リクエストごとに破棄される。 ページ番号をクリックすることにより、ポストバックされ、DataGrid の列情報が破棄される。 列数が 0 となった DataGrid は、存在しないコントロールとして扱われるため、以降のイベントなどは一切発生しなくなる。 AutoGenerateColumns プロパティが False 且つデザインで列を設定していない場合、リクエストごとに DataGrid の列を生成する必要がある。 【解決方法】 1.Page_LaodイベントでColumnの追加と、DataBind処理を追加する。 # Columnの追加だけだと、同じ現象が発生します。 2.デザインでDataGridにダミーの連結列を作り、コーディング内ではダミー列を削除(クリア) してから、列を追加する。 解決方法1の場合、Page_Loadイベントと他のイベントとで2回データをBindすることになります。 私の抱えていた案件の場合、DataGridの表示ページにより、DataSetの中身が変わる特殊なものでしたので、二回DataSetを作成するのは無駄と考え、解決方法2を使用しました。 MSからの回答は、私が作成して提出したサンプルが単純な作りだった為、解決方法1で手を加えたサンプルが返ってきました。 以上、ご参考までに。 |
1