我有自写网格,需要在提交按钮点击后收集有关项目复选框的信息。
<form id="form1" runat="server">
<div>
<asp:Repeater id="fields" runat="server">
<HeaderTemplate>
<table>
<tr><td><h3>Fields Info</h3></td><td><h3>Check</h3></td></tr>
</HeaderTemplate>
<ItemTemplate>
<tr><td><asp:Label runat="server"
text=<%# Eval("Field")%> /></td><td><asp:CheckBox runat="server" /></td></tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<asp:Button runat="server" Text="Submit"/>
请求帮助!
答案 0 :(得分:0)
什么样的信息?如果您想在转发器中找到所有CheckBoxes
,请为其提供ID
并使用RepeaterItem.FindControl("TheID")
。或者您可以循环所有项目并使用Controls.OfType<CheckBox>
:
var allCheckBoxes = fields.Items.Cast<RepeaterItem>()
.Select(item => new {
Label = item.Controls.OfType<Label>().First(),
CheckBox = item.Controls.OfType<CheckBox>().First()
});
现在你可以循环它们了:
foreach(var x in allCheckBoxes)
{
Console.WriteLine("Label: {0} checked: {1}", x.Label.Text, x.CheckBox.Checked ? "yes" : "no");
}
或仅获取已选中的内容:
var checkedOnly = allCheckBoxes.Where(x => x.CheckBox.Checked);
foreach(var x in allCheckBoxes){
//...
}