Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为中继器中的复选框分配ID?_C#_Checkbox_User Controls_Webforms_Repeater - Fatal编程技术网

C# 如何为中继器中的复选框分配ID?

C# 如何为中继器中的复选框分配ID?,c#,checkbox,user-controls,webforms,repeater,C#,Checkbox,User Controls,Webforms,Repeater,我在中继器上有以下复选框: <asp:Repeater id="repeaterCategories" runat="server"> <ItemTemplate> ... <asp:CheckBox ID="chbCategoria" Text="My Label" runat="server" /> ... </ItemTemplate> </asp:Repeater&g

我在中继器上有以下复选框:

<asp:Repeater id="repeaterCategories" runat="server">
    <ItemTemplate>
        ...

        <asp:CheckBox ID="chbCategoria" Text="My Label" runat="server" />

        ...
    </ItemTemplate>
</asp:Repeater>

...
...
每个复选框必须与从数据库中获取的页面ID一致(每个repeaterCategories项都有其唯一的ID,所以只有一个)

我如何设置它?因此,在回发时,我检查选中了哪些复选框控件,并获得ID。

用户控件页面:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
<asp:CheckBox id ="MyCheckBox" runat="server"/>
在您的转发器页面:

<%@ Register Src="~/WebUserControl.ascx" TagPrefix="uc1" TagName="WebUserControl" %>

中继器内部:

<asp:Repeater id="repeaterCategories" runat="server">
    <ItemTemplate>
        ...

        <uc1:WebUserControl runat="server" ID="WebUserControl" MyProperty="My_ID_Value" />

        ...
    </ItemTemplate>
</asp:Repeater>

...
...

您可以在web用户控件上添加任意数量的属性。

您可以尝试添加这样的自定义属性吗

protected void repeaterCategories_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        CheckBox chk = e.Item.FindControl("chbCategoria") as CheckBox ;
        chk.Attributes.Add("PageID", DataBinder.Eval(e.Item.DataItem, "DB_FIELD").ToString());
    }
}

嗯,不是真的!尝试使用
checkBox.Attributes.Add(“category id”,((ArchiePagina)e.Item.DataItem).UniqueID)但它将属性添加到范围,而不是复选框:OI不明白你在说什么:OSeems nice!为什么
如果(e.Item.ItemType==ListItemType.Item | | e.Item.ItemType==ListItemType.AlternatingItem)
protected void repeaterCategories_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        CheckBox chk = e.Item.FindControl("chbCategoria") as CheckBox ;
        chk.Attributes.Add("PageID", DataBinder.Eval(e.Item.DataItem, "DB_FIELD").ToString());
    }
}