0

我们有一个 GridView,其中包含 2 个“选择”按钮,用于显示在 GridView 中的每一行。

我们想知道是否有一种方法可以通过使用 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
4

2 回答 2

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 ...
    }
}
于 2012-09-29T02:44:50.280 回答
0

我认为您无法区分 GridView 事件级别的源,因为它是 GridView 在该点引发的事件,它掩盖了较低级别的事件。但是,您可以实现一个行级处理程序来识别哪个按钮用于引发事件并将其设置在某个位置以供在 gridview 事件中使用。

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

}
于 2015-02-09T15:57:35.780 回答