0

我们有一个GridView,其中包含GridView中显示的每一行的两个“选择”按钮。找出在GridView的SelectedIndexChanged事件处理程序中单击了哪个按钮

我们想知道是否有方法通过使用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 ... 
    } 
} 
+0

您可以使用任何属性来触发开关,我只是选择CommandName,因为它听起来对我来说是最直观的。 –

+0

感谢您的快速回复。我明天会试试看,并告诉你它是如何工作的。 :-) –

+0

没问题,这是我们在等待我们自己的问题的答案时所做的。 –

0

我不认为你可以在GridView的事件级别源之间进行区分,因为它是在这一点上它掩盖了较低级别的情况下,被GridView控件引发的事件。但是,您可以实现行级处理程序,以确定哪个按钮用于引发事件并将其设置在某处以便在gridview事件中使用。

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

} 
相关问题