如何检查在嵌套数据网格中单击哪个行按钮

时间:2014-09-24 13:30:43

标签: c# .net datagridview buttonclick

我正在开发一个Web应用程序,其中包含一个与另一个数据网格嵌套的数据网格。因为子数据网格包含每个父网格末尾的按钮,如下所示: - enter image description here

我想要的是我需要知道按钮单击哪个按钮。

这是我的aspx代码:

<asp:DataGrid ID="dgparent" runat="server" BorderWidth="1px" BorderColor="#FE9B00">
 <Columns>
    <asp:TemplateColumn>
          <ItemTemplate>
        <asp:DataGrid ID="dgchild" runat="server" >
         <Columns>
        <asp:BoundColumn DataField="ID" HeaderText="mFCF_NUPKId"                    Visible="False"></asp:BoundColumn>
        <asp:BoundColumn DataField="CostSheetNo" HeaderText="CostSheetNo"               SortExpression="CostSheetNo">
            </Columns>
      </asp:DataGrid>
        <table>
            <tr>
            <td>
            <asp:Label ID="LblTotalCoLoaderFrom1" runat="server" Text="Total Cost :             "></asp:Label>
            <asp:TextBox ID="TxtTotalCoLoaderFrom1" runat="server"          Enabled="false"></asp:TextBox>
            </td>
            <td>
            <asp:Label ID="LblTotalYeild" runat="server" Text="Total Yeild :            "></asp:Label>
            <asp:TextBox ID="TxtTotalYeild" runat="server"          Enabled="false"></asp:TextBox>
            </td>
            <td>
            <asp:Button ID="BTNBookingReq" runat="server" class="formbutton"            OnClick="BTNBookingReq_Click" Text="Send Booking Request"/>
            </td>
            </tr>
         </table>
    </ItemTemplate>
    </asp:TemplateColumn>
 </Columns>
</asp:DataGrid>

这是我的C#:

protected void BTNBookingReq_Click(Object sender, EventArgs e)
        {
            Button btnSender = (Button)sender;
           //if(btnSender == 1strow)
                 //Need to get the Parent Column Text
            else if(btnSender == 2ndrow)
                 //Need to get the Parent Column Text
             .........
        }

任何人都可以帮我解决这个问题。 在此先感谢

1 个答案:

答案 0 :(得分:1)

您可以使用按钮的NamingContainer获取父网格项,这将提供datagrid项。从那里你可以使用FindControl方法找到每个文本框,如下所示

protected void BTNBookingReq_Click(Object sender, EventArgs e)
{
    Button btnSender = (Button)sender;
    DataGridItem item = btnSender.NamingContainer as DataGridItem;
    if (item != null)
    {
        TextBox TxtTotalCoLoaderFrom1 = item.FindControl("TxtTotalCoLoaderFrom1") as TextBox;
        //Do your operation here
    }

}