你如何制作一个Gridview:
<asp:GridView runat="server" ID="gvMyGrid">
<Columns>
<asp:BoundField DataField="MyField" HeaderText="HeaderForMyField />
... You have a few of these
<asp:TemplateField HeaderText="Products">
<ItemTemplate>
<asp:Repeater runat="server" id="rptListOfProducts" OnItemDataBound="ProductsDataBound">
<ItemTemplate>
<asp:HiddenField id="hfProductId" runat="server"
Value='<%# DataBinder.Eval(Container.DataItem, "ProductId") %>'/>
<asp:CheckBox id="cbProduct" runat="Server"
Text='<%# DataBinder.Eval(Container.DataItem, "ProductName") %>'
Checked='<%# DataBinder.Eval(Container.DataItem, "IsThisProductSelected") %>' /> //Or some kind of flag that is true or false
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</Columns>
</asp:GridView>
然后在你的 C# 代码中你可以这样来找出用户改变了什么。
foreach (Control c in rptMonitors.Items)
{
var productId = int.Parse(((HiddenField)c.FindControl("hfProductId")).Value);
//And get the check box too, generate a list of ProductIds, and if they're checked or not
}
不知道这是不是你要找的,描述有点模糊
编辑:哦,如果您希望中继器中有大量条目,您可以将其包装在 AjaxControlToolkit 可折叠面板中,这样它就不会在您的屏幕上显示垃圾邮件。