UniqueID,页面子控件唯一标示

aspx:

<form id="form1" runat="server">
    <asp :Repeater ID="MyDataList" runat="server">
        <ItemTemplate>
            <asp: Label ID ="Mylbl" runat ="server"></asp: Label>
        </ItemTemplate>
    </asp :Repeater>
   
    <asp :Label ID="ResultsLabel" runat="server"></asp :Label>
    </form >
aspx.cs:
protected void Page_Load(object sender, EventArgs e)
        {
            StringBuilder sb = new StringBuilder();
            //获取Repater 控件的命名控件
            sb.Append( "Container:a" + MyDataList.NamingContainer.ToString()+"<p>" );
 
            ArrayList arrList = new ArrayList();
            arrList.Add( "a");
            arrList.Add( "b");
            arrList.Add( "c");
 
            MyDataList.DataSource = arrList;
            MyDataList.DataBind();
 
            //获取数据控件中集合的个数
            for (int i = 0; i < MyDataList.Controls.Count; i++)
            {
 
                Label reLb= (Label)((RepeaterItem )MyDataList.Controls[i]).FindControl("Mylbl");
                //获取lbl 控件的命名控件
                sb.Append( "Container:b" + ((RepeaterItem)MyDataList.Controls[i]).NamingContainer.ToString() + "@@");
                //给lbl 添加唯一标示
                sb.Append( "<b>" + reLb.UniqueID + "</b><p>" );
 
            }
 
            ResultsLabel.Text = sb.ToString();
        }
 
运行结果:
 
属性注释:

此属性与 ID 属性不同,因为 UniqueID 属性包含服务器控件命名容器的标识符。 处理页请求时自动生成此标识符。

此属性对于区分包含在其他重复的数据绑定服务器控件中的服务器控件尤其重要。 重复控件包括 RepeaterDataListDetailsViewFormView 和 GridView Web 服务器控件(或任何在数据绑定时创建的包含重复功能的自定义服务器控件),它们充当其子控件的命名容器。 这意味着它为其子控件创建唯一的命名空间,以使它们的 ID 属性值不冲突。

原文地址:https://www.cnblogs.com/yulei126/p/6758082.html