如何将ID分配给中继器中的复选框?

本文关键字:复选框 中继器 ID 分配 | 更新日期: 2023-09-27 18:10:25

我在中继器上有这些复选框:

<asp:Repeater id="repeaterCategories" runat="server">
    <ItemTemplate>
        ...
        <asp:CheckBox ID="chbCategoria" Text="My Label" runat="server" />
        ...
    </ItemTemplate>
</asp:Repeater>

每个复选框必须与从数据库中获取的Page ID一致(每个repeaterCategories Item都有其唯一的ID,因此一个)。

如何设置?因此,在回发时,我检查哪些CheckBox控件是Checked并获得id

如何将ID分配给中继器中的复选框?

你可以试着添加这样的自定义属性吗

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());
    }
}

用户控制页面:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
<asp:CheckBox id ="MyCheckBox" runat="server"/>

背后的代码:

using System;
public partial class WebUserControl : System.Web.UI.UserControl
{
    private string _myProperty;
    public string MyProperty 
    {
        get { return this._myProperty; }
        set { this._myProperty = value; }
    }
    public bool IsChecked
    {
        get 
        {
            return this.MyCheckBox.Checked;
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
    }
}

在您的中继器页面:

<%@ 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用户控件中添加任意多的属性。