C# 如何从嵌套Gridview中的RadioButtonList获取数据

C# 如何从嵌套Gridview中的RadioButtonList获取数据,c#,asp.net,gridview,radio-button,C#,Asp.net,Gridview,Radio Button,我找不到任何答案,所以我不得不问 我有一个嵌套的gridview。我能够拉入父级Gridviews RadiobuttonList的数据 但是,我需要帮助从“Child”gridview单选按钮列表中提取数据 这是我为家长使用的 foreach (GridViewRow row in grdViewCustomers.Rows) { HFCus.Value = row.Cells[1].Text; // CheckBox chk = row.Cells[9]

我找不到任何答案,所以我不得不问

我有一个嵌套的
gridview
。我能够拉入父级
Gridviews RadiobuttonList
的数据

但是,我需要帮助从“Child”
gridview
单选按钮列表中提取数据

这是我为
家长使用的

foreach (GridViewRow row in grdViewCustomers.Rows)
    {
        HFCus.Value = row.Cells[1].Text;
       // CheckBox chk = row.Cells[9].FindControl("Edit") as CheckBox;
        //if (e.Row.RowType == DataControlRowType.DataRow) { }
        RadioButtonList rbl = (grdViewCustomers.Rows[row.RowIndex].FindControl("RadioCusList") as RadioButtonList);
        if(rbl.SelectedIndex > -1)


        {
            string radiovalue = (grdViewCustomers.Rows[row.RowIndex].FindControl("RadioCusList") as RadioButtonList).SelectedItem.Value;

            string CustomerID = grdViewCustomers.DataKeys[row.RowIndex].Value.ToString();
            lblTest.Text = radiovalue + "     RadioValue"; //Button Text
            lbltest2.Text = CustomerID + "     CustomerID"; //Customer ID
            lbltest3.Text = HFCus.Value + "     CustomerName"; //Customer Name
        }
        else{}
    }
这对父母很有效

但是,如果我尝试做一个精确的副本,但是对于孩子来说,它不理解ChildGridviews“ID”

它总是在foreach的第一行出错(GRDViewersofCustomer行中的GridViewRow行)

这里是整个按钮点击

protected void Button1_Click(object sender, EventArgs e)
{
    foreach (GridViewRow row in grdViewCustomers.Rows)
    {
        HFCus.Value = row.Cells[1].Text;
        RadioButtonList rbl = (grdViewCustomers.Rows[row.RowIndex].FindControl("RadioCusList") as RadioButtonList);
        if(rbl.SelectedIndex > -1)
        {
            string radiovalue = (grdViewCustomers.Rows[row.RowIndex].FindControl("RadioCusList") as RadioButtonList).SelectedItem.Value;

            string CustomerID = grdViewCustomers.DataKeys[row.RowIndex].Value.ToString();
            lblTest.Text = radiovalue + "     RadioValue"; //Button Text
            lbltest2.Text = CustomerID + "     CustomerID"; //Customer ID
            lbltest3.Text = HFCus.Value + "     CustomerName"; //Customer Name
        }
        else{}
    }

    foreach (GridViewRow row in grdViewOrdersOfCustomers.Rows)
    {
        HFCus.Value = row.Cells[1].Text;
        RadioButtonList rbl = (grdViewOrdersOfCustomers.Rows[row.RowIndex].FindControl("RadioButtonList") as RadioButtonList);
        if (rbl.SelectedIndex > -1)
        {
            string radiovalue = (grdViewOrdersOfCustomers.Rows[row.RowIndex].FindControl("RadioButtonList") as RadioButtonList).SelectedItem.Value;

            string CustomerID = grdViewOrdersOfCustomers.DataKeys[row.RowIndex].Value.ToString();
            lblTest.Text = radiovalue + "     RadioValue"; //Button Text
            lbltest2.Text = CustomerID + "     CustomerID"; //Customer ID
            lbltest3.Text = HFCus.Value + "     CustomerName"; //Customer Name
        }
        else { }
    }  
}
这是ASPX的报告

<div>
    <asp:GridView ID="grdViewCustomers" runat="server" AutoGenerateColumns="false" DataKeyNames="ID"
         CssClass="Grid" EmptyDataText="No Budgets To Approve" OnRowDataBound="grdViewCustomers_OnRowDataBound">
        <Columns>
            <asp:TemplateField ItemStyle-Width="20px">
                <ItemTemplate>
                    <a href="JavaScript:divexpandcollapse('div<%# Eval("ID") %>');">
                        <img alt="Details" id='imgdiv<%# Eval("ID") %>' src="images/plus.png" />
                    </a>
                    <div id='div<%# Eval("ID") %>' style="display: none;">
                        <asp:GridView ID="grdViewOrdersOfCustomer" runat="server" AutoGenerateColumns="false"
                            DataKeyNames="ID" CssClass="ChildGrid" OnRowDataBound="grdViewOrdersOfCustomer_RowDataBound">
                            <Columns>
                                    <asp:BoundField ItemStyle-Width="150px" DataField="ID" HeaderText="ID" Visible="False" />
                                    <asp:BoundField ItemStyle-Width="150px" DataField="ID_CUST_SOLDTO" HeaderText="Customer Name" />
                                    <asp:BoundField ItemStyle-Width="75px" DataField="id_item" HeaderText="Item" />
                                    <asp:BoundField ItemStyle-Width="75px" DataField="PN5YB" HeaderText="5 Years Back" />
                                    <asp:BoundField ItemStyle-Width="75px" DataField="PN4YB" HeaderText="4 Years Back" />
                                    <asp:BoundField ItemStyle-Width="75px" DataField="PN3YB" HeaderText="3 Years Back" />
                                    <asp:BoundField ItemStyle-Width="75px" DataField="PN2YB" HeaderText="2 Years Back" />
                                    <asp:BoundField ItemStyle-Width="75px" DataField="PN1YB" HeaderText="1 Years Back" />
                                    <asp:BoundField ItemStyle-Width="75px" DataField="PN0YB" HeaderText="This Year" />
                                    <asp:BoundField ItemStyle-Width="75px" DataField="Area" HeaderText="Area" />
                                        <asp:TemplateField HeaderText="Edit">
                                           <ItemTemplate>
                                                <asp:RadioButtonList ID="RadioButtonList" runat="server" RepeatDirection="Horizontal">
                                                    <asp:ListItem Text="Bud" />
                                                    <asp:ListItem Text="B/O" />
                                                    <asp:ListItem Text="B/G" />
                                                    <asp:ListItem Text="DNB" />
                                                  </asp:RadioButtonList>
                                             </ItemTemplate>
                                          </asp:TemplateField>
                            </Columns>
                        </asp:GridView>
                    </div>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="ID_CUST_SOLDTO" SortExpression="ID_CUST_SOLDTO" ItemStyle-Width="90px" />
                <asp:BoundField DataField="PN5YB" SortExpression="PN5YB" DataFormatString="{0:C0}" ItemStyle-Width="90px" ItemStyle-HorizontalAlign="Right" />
                <asp:BoundField DataField="PN4YB" SortExpression="PN4YB" DataFormatString="{0:C0}" ItemStyle-Width="90px" ItemStyle-HorizontalAlign="Right" />
                <asp:BoundField DataField="PN3YB" SortExpression="PN3YB" DataFormatString="{0:C0}" ItemStyle-Width="90px" ItemStyle-HorizontalAlign="Right" />
                <asp:BoundField DataField="PN2YB" SortExpression="PN2YB" DataFormatString="{0:C0}" ItemStyle-Width="90px" ItemStyle-HorizontalAlign="Right" />
                <asp:BoundField DataField="PN1YB" SortExpression="PN1YB" DataFormatString="{0:C0}" ItemStyle-Width="90px" ItemStyle-HorizontalAlign="Right" />
                <asp:BoundField DataField="PN0YB" SortExpression="PN0YB" DataFormatString="{0:C0}" ItemStyle-Width="90px" ItemStyle-HorizontalAlign="Right" />
                <asp:BoundField DataField="area" SortExpression="Area" ItemStyle-Width="90px" ItemStyle-HorizontalAlign="Right" />
            <asp:TemplateField HeaderText="Edit">
                <ItemTemplate>
                    <asp:RadioButtonList ID="RadioCusList"  runat="server" RepeatDirection="Horizontal">
                        <asp:ListItem Text="Bud" />
                        <asp:ListItem Text="B/O" />
                        <asp:ListItem Text="B/G" />
                        <asp:ListItem Text="DNB" />
                        <asp:ListItem Text="Err" />
                </asp:RadioButtonList>
                </ItemTemplate>
                </asp:TemplateField>
        </Columns>
    </asp:GridView>
   </div>


在定义了GridView的地方,您的aspx标记是什么样子的。。?您是否有客户的
grdViewOrdersOfCUstomer
的id,或者您是否偶然将其命名为
grdViewOrdersOfCUstomer
,我在上面发布了更改。在
grdViewOrdersOfCUstomer
内部,您有
RadioButtonList
。但是,您的代码调用了
FindControl(RadioCusList)
。您是正确的。由于第一行不喜欢“grdViewOrdersOfCustomer.Rows”这个名称,我还没有修复其余的“子代码”。我希望解决这个错误,而不是一路走下去。
<div>
    <asp:GridView ID="grdViewCustomers" runat="server" AutoGenerateColumns="false" DataKeyNames="ID"
         CssClass="Grid" EmptyDataText="No Budgets To Approve" OnRowDataBound="grdViewCustomers_OnRowDataBound">
        <Columns>
            <asp:TemplateField ItemStyle-Width="20px">
                <ItemTemplate>
                    <a href="JavaScript:divexpandcollapse('div<%# Eval("ID") %>');">
                        <img alt="Details" id='imgdiv<%# Eval("ID") %>' src="images/plus.png" />
                    </a>
                    <div id='div<%# Eval("ID") %>' style="display: none;">
                        <asp:GridView ID="grdViewOrdersOfCustomer" runat="server" AutoGenerateColumns="false"
                            DataKeyNames="ID" CssClass="ChildGrid" OnRowDataBound="grdViewOrdersOfCustomer_RowDataBound">
                            <Columns>
                                    <asp:BoundField ItemStyle-Width="150px" DataField="ID" HeaderText="ID" Visible="False" />
                                    <asp:BoundField ItemStyle-Width="150px" DataField="ID_CUST_SOLDTO" HeaderText="Customer Name" />
                                    <asp:BoundField ItemStyle-Width="75px" DataField="id_item" HeaderText="Item" />
                                    <asp:BoundField ItemStyle-Width="75px" DataField="PN5YB" HeaderText="5 Years Back" />
                                    <asp:BoundField ItemStyle-Width="75px" DataField="PN4YB" HeaderText="4 Years Back" />
                                    <asp:BoundField ItemStyle-Width="75px" DataField="PN3YB" HeaderText="3 Years Back" />
                                    <asp:BoundField ItemStyle-Width="75px" DataField="PN2YB" HeaderText="2 Years Back" />
                                    <asp:BoundField ItemStyle-Width="75px" DataField="PN1YB" HeaderText="1 Years Back" />
                                    <asp:BoundField ItemStyle-Width="75px" DataField="PN0YB" HeaderText="This Year" />
                                    <asp:BoundField ItemStyle-Width="75px" DataField="Area" HeaderText="Area" />
                                        <asp:TemplateField HeaderText="Edit">
                                           <ItemTemplate>
                                                <asp:RadioButtonList ID="RadioButtonList" runat="server" RepeatDirection="Horizontal">
                                                    <asp:ListItem Text="Bud" />
                                                    <asp:ListItem Text="B/O" />
                                                    <asp:ListItem Text="B/G" />
                                                    <asp:ListItem Text="DNB" />
                                                  </asp:RadioButtonList>
                                             </ItemTemplate>
                                          </asp:TemplateField>
                            </Columns>
                        </asp:GridView>
                    </div>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="ID_CUST_SOLDTO" SortExpression="ID_CUST_SOLDTO" ItemStyle-Width="90px" />
                <asp:BoundField DataField="PN5YB" SortExpression="PN5YB" DataFormatString="{0:C0}" ItemStyle-Width="90px" ItemStyle-HorizontalAlign="Right" />
                <asp:BoundField DataField="PN4YB" SortExpression="PN4YB" DataFormatString="{0:C0}" ItemStyle-Width="90px" ItemStyle-HorizontalAlign="Right" />
                <asp:BoundField DataField="PN3YB" SortExpression="PN3YB" DataFormatString="{0:C0}" ItemStyle-Width="90px" ItemStyle-HorizontalAlign="Right" />
                <asp:BoundField DataField="PN2YB" SortExpression="PN2YB" DataFormatString="{0:C0}" ItemStyle-Width="90px" ItemStyle-HorizontalAlign="Right" />
                <asp:BoundField DataField="PN1YB" SortExpression="PN1YB" DataFormatString="{0:C0}" ItemStyle-Width="90px" ItemStyle-HorizontalAlign="Right" />
                <asp:BoundField DataField="PN0YB" SortExpression="PN0YB" DataFormatString="{0:C0}" ItemStyle-Width="90px" ItemStyle-HorizontalAlign="Right" />
                <asp:BoundField DataField="area" SortExpression="Area" ItemStyle-Width="90px" ItemStyle-HorizontalAlign="Right" />
            <asp:TemplateField HeaderText="Edit">
                <ItemTemplate>
                    <asp:RadioButtonList ID="RadioCusList"  runat="server" RepeatDirection="Horizontal">
                        <asp:ListItem Text="Bud" />
                        <asp:ListItem Text="B/O" />
                        <asp:ListItem Text="B/G" />
                        <asp:ListItem Text="DNB" />
                        <asp:ListItem Text="Err" />
                </asp:RadioButtonList>
                </ItemTemplate>
                </asp:TemplateField>
        </Columns>
    </asp:GridView>
   </div>