0

編集ボタンを含むグリッドがあります。編集ボタンをクリックしてデバッグすると、選択したインデックス変更イベントにヒットしません。ビルドエラーはありません

グリッドの背後にあるコード

public void btnModemDetailsEdit_Click(object sender, EventArgs e)
{
    isEdit = true;
}

protected void gridModemDetails_SelectedIndexChanged(object sender, EventArgs e)
{
    int id = Convert.ToInt32(GridModemDetails.DataKeys[GridModemDetails.SelectedIndex].Values["gridModemDetails_SelectedIndexChanged"].ToString());
}

<asp:GridView ID="GridModemDetails" runat="server" Width="435px" 
              DataKeyNames="ModemId" AllowPaging="True"
              OnSelectedIndexChanged="gridModemDetails_SelectedIndexChanged"
              AutoGenerateColumns="False">
    <Columns>
        <asp:TemplateField HeaderText="Edit" Visible="True" >
            <ItemTemplate>
                <asp:LinkButton ID="btnModemDetailsEdit" 
                                AccessibleHeaderText="Edit" 
                                ButtonType="Button" 
                                Text="Edit" 
                                HeaderText="Edit" 
                                runat="server" 
                                OnClick="btnModemDetailsEdit_Click"/>
            </ItemTemplate>
        </asp:TemplateField>
4

1 に答える 1

3

のイベントはイベントに関連付けられていGridViewます。SelectedIndexChangedRowCommand

SelectedIndexChangedイベントを発生させる簡単な方法は、次のように のAutoGenerateSelectButtonプロパティを使用することです。GridView

<asp:GridView AutoGenerateSelectButton="true"

これにより、テキストを含む各行にボタンが追加され、SelectクリックするとSelectedIndexChangeイベントが発生します。


編集ボタンの場合、次のCommandFieldようにグリッド ビュー マークアップで使用できます。

<asp:GridView ...>
    <Columns>
        <asp:CommandField ShowEditButton="True" />
    </Columns>
</asp:GridView>

RowCommandコード ビハインドで、次のようにイベントを処理できます。

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Edit") 
    {
        // Get the actual row
        GridViewRow theGridViewRow = GridView1.Rows(e.RowIndex);

        // Do something with grid view row here
    }
}
于 2013-11-04T04:05:02.717 に答える