• ベストアンサー

VB.net webアプリケーションでのDataGridコントロールの使い方

VB.net2003 os WinXP Pro webアプリケーションでのDataGridコントロールの使い方ですが。 グリッドの左のほうに「編集」や「削除」のボタンを出すことができたのですが、「編集」や「削除」のボタンを押したときのイベントを拾うことができません。なぜでしょうか?DataGrid1_EditCommand()イベントなど通りません。 あと、イベントが拾えたとして、押した行の位置とかを調べることができるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • locoyama
  • ベストアンサー率77% (7/9)
回答No.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 ただ、上記のコードは、ソートした場合などや、ページングした時にちゃんと動くかどうかの テストまではやってませんので、あしからずご了承下さいませ。

参考URL:
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1835&forum=7
lord_chan
質問者

補足

ありがとうございます。調べてみます。

その他の回答 (2)

  • ALGO-9
  • ベストアンサー率66% (12/18)
回答No.2

【追記】 ボタンを押したというイベントにはならないかもしれませんが、 DataGridのClickイベントやKeyDownイベントで対応することで、それなりに動くのでは...

  • ALGO-9
  • ベストアンサー率66% (12/18)
回答No.1

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 どうでしょうか。

lord_chan
質問者

補足

ありがとうございます。ボタンを押しても何もイベントが立ち上がらないのですが。Page_Loadイベントのみ立ち上がる。 Dim HitInfo As System.Windows.Forms.DatGrid.HitTestInfo HitInfo = DataGrid1.HitTest(e.X, e.Y) ・・・ はどこに記述すればよいでしょうか? あとwebアプリケーションなので「System.Windows」という型がないのですが。