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>