Выяснение, какая кнопка была нажата в обработчике события SelectedIndexChanged GridView

У нас есть GridView, который содержит 2 кнопки "Выбрать" для каждой строки, которая отображается в GridView.

Нам бы хотелось узнать, есть ли способ узнать, на какую из 2 кнопок нажали, используя обработчик SelectedIndexChanged.

Эта кодировка показывает кнопки, которые у нас есть:

<asp:UpdatePanel 
    ID="UpdatePanelParentsSummary" 
    runat="server" 
    UpdateMode="Conditional">

    <ContentTemplate> 
        <p>Parent Search:
            <asp:TextBox 
                ID="TextBoxSearch" 
                runat="server" 
                Width="207px" 
                Text="ALL"> </asp:TextBox>

            <asp:Button 
                ID="ButtonSearch" 
                runat="server" 
                Text="Search" />

            <asp:Button 
                ID="ButtonSearchAll" 
                runat="server" 
                Text="Show ALL Parents" />

            <br />
        </p>

        <asp:GridView
            ID="GridViewParentsSummary" 
            runat="server" 
            AllowPaging="True" 
            AllowSorting="True" 
            AutoGenerateColumns="False" 
            DataKeyNames="ID"
            >

            <Columns>
                <asp:BoundField 
                    DataField="ID" 
                    HeaderText="ID" 
                    SortExpression="ID" InsertVisible="False" ReadOnly="True" Visible="False" />

                <asp:BoundField 
                    DataField="FatherName" 
                    HeaderText="FatherName" 
                    SortExpression="FatherName" />

                <asp:BoundField DataField="MotherName" HeaderText="MotherName" 
                    SortExpression="MotherName" />

                <asp:ButtonField 
                    ButtonType="Button" 
                    CommandName="Select" 
                    Text="Select Details" />

                <asp:ButtonField 
                    ButtonType="Button" 
                    CommandName="Select" 
                    Text="New Person To Release Child" />
            </Columns>
        </asp:GridView>
    </ContentTemplate>
</asp:UpdatePanel>

Это код в обработчике SelectedIndexChanged:

Protected Sub GridViewParentsSummary_SelectedIndexChanged(sender As Object, e As EventArgs) Handles GridViewParentsSummary.SelectedIndexChanged

    IntParentsID = GridViewParentsSummary.DataKeys(GridViewParentsSummary.SelectedIndex).Value

    Response.Redirect("AuthorizationForChildReleaseDetails.aspx")
End Sub

2 ответа

Решение

Ах, есть простое решение этой проблемы. Ваш отправитель нажал кнопку. Просто попробуйте что-то вроде:

ButtonField buttonClicked = sender as ButtonField;
if (buttonClicked != null) {
    String commandName = buttonClicked.CommandName;

    if (commandName.equals("Command1") {
       ... do something awesome ...
    } else if (commandName.equals("Command2")) {
       ... do something less awesome ...
    }
}

Я не думаю, что вы можете различить источник на уровне события GridView, потому что это событие, вызванное GridView в тот момент, который маскирует событие нижнего уровня. Однако вы можете реализовать обработчик на уровне строк, чтобы определить, какая кнопка использовалась для вызова события, и настроить ее где-нибудь для использования в событии gridview.

protected void GridView_RowCommand(object sender, CommandEventArgs e)
{
   e.CommandArgument ....contains the argument name 
   ....

}
Другие вопросы по тегам