GridView OnSelectedIndexChanged イベントが発生しない

GridView の行をクリックするだけの場合 、それはイベントを発生させません。クリックする行にある種のボタンが必要です。これにより、 RowCommand が起動されます イベント、および SelectedIndexChanged イベント (もちろん、クリックした行がまだ選択されていない場合)。 Windows フォームの DataGridView とまったく同じではありません =)

イベントを発生させる最も簡単な方法は、この属性を GridView に追加することです マークアップ:

AutoGenerateSelectButton="True"

これにより、「選択」 LinkButton が作成されます Gridview1_SelectedIndexChanged2 を起動します クリックすると、コード ビハインドでイベントが発生します。

編集: 明確にするために、ここにその属性を追加する必要があります:

<asp:GridView ID="GridView1" runat="server" GridLines="None" 
  Width="930px" CellPadding="4" ForeColor="#333333"  
  onselectedindexchanged="GridView1_SelectedIndexChanged2"
  AutoGenerateSelectButton="True" >

行をクリックして SelectedIndexChanged を処理できないというのは正しくありません イベント。 RowCreated に少しコードを追加するだけです。 イベント。

Protected Sub yourDataGrid_RowCreated(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles yourDataGrid.RowCreated
    If e.Row.RowType = DataControlRowType.DataRow Then
        e.Row.Attributes("onclick") = Me.Page.ClientScript.GetPostBackEventReference(Me.yourDataGrid, "Select$" & e.Row.RowIndex)
    End If
End Sub

この質問が出されてから数年が経ちました。問題を抱えている人がそれを理解してくれることを願っていますが、私も同じ問題を抱えていて、レスポンダーの 1 人のおかげで問題が何であるかを突き止めました.

Gridview で実際のボタン行を確認し、 CommandName="Select" があることを確認してください ボタンフィールドで。何らかの理由で それ 通常は自動的に入力されるコードが追加されませんでした。