- ベストアンサー
VB.net webアプリケーションでのDataGridコントロールの使い方
VB.net2003 os WinXP Pro webアプリケーションでのDataGridコントロールの使い方ですが。 グリッドの左のほうに「編集」や「削除」のボタンを出すことができたのですが、「編集」や「削除」のボタンを押したときのイベントを拾うことができません。なぜでしょうか?DataGrid1_EditCommand()イベントなど通りません。 あと、イベントが拾えたとして、押した行の位置とかを調べることができるのでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>DataGrid1_EditCommand()イベントなど通りません。 こちらの件なのですが、テストしてみた所何の問題も無く、通りました。 もしかすると、下のURLのような事でしょうか? http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1835&forum=7 押した行の位置なのですが、以下のようにすると、取得出来ましたよ(編集ボタン)。 Private Sub DataGrid1_EditCommand(ByVal source As Object, _ ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) _ Handles DataGrid1.EditCommand Me.Label1.Text = e.Item.ItemIndex.ToString() End Sub ただ、上記のコードは、ソートした場合などや、ページングした時にちゃんと動くかどうかの テストまではやってませんので、あしからずご了承下さいませ。
その他の回答 (2)
- ALGO-9
- ベストアンサー率66% (12/18)
【追記】 ボタンを押したというイベントにはならないかもしれませんが、 DataGridのClickイベントやKeyDownイベントで対応することで、それなりに動くのでは...
- ALGO-9
- ベストアンサー率66% (12/18)
HitTestメソッドを使用して位置を特定することが出来ます。 Dim HitInfo As System.Windows.Forms.DatGrid.HitTestInfo HitInfo = DataGrid1.HitTest(e.X, e.Y) '// eはSystem.EventArgsです IF HitInfo.Type = System.Windows.Forms.DataGrid.HitTestType.Cell THEN HitInfo.Row と HitInfo.Column に位置情報が格納されています。 END IF どうでしょうか。
補足
ありがとうございます。ボタンを押しても何もイベントが立ち上がらないのですが。Page_Loadイベントのみ立ち上がる。 Dim HitInfo As System.Windows.Forms.DatGrid.HitTestInfo HitInfo = DataGrid1.HitTest(e.X, e.Y) ・・・ はどこに記述すればよいでしょうか? あとwebアプリケーションなので「System.Windows」という型がないのですが。
補足
ありがとうございます。調べてみます。