在代码隐藏中设置ASP.NET控件的唯一ID

在代码隐藏中设置ASP.NET控件的唯一ID,asp.net,updatepanel,code-behind,unique-id,Asp.net,Updatepanel,Code Behind,Unique Id,我在代码隐藏中有一组动态创建的复选框,如下所示: CheckBox[] checks = new CheckBox[n]; 其中n是在运行时计算的整数。我已将所有这些复选框添加到网格中,因此它们在我的ASP.NET网页中都可见,但现在我想将它们全部作为触发器添加到更新面板中。因此,我需要在代码隐藏中执行此操作: <asp:UpdatePanel id="upPanel" runat="server"> <ContentTemplate> // .

我在代码隐藏中有一组动态创建的复选框,如下所示:

CheckBox[] checks = new CheckBox[n];
其中n是在运行时计算的整数。我已将所有这些复选框添加到网格中,因此它们在我的ASP.NET网页中都可见,但现在我想将它们全部作为触发器添加到更新面板中。因此,我需要在代码隐藏中执行此操作:

<asp:UpdatePanel id="upPanel" runat="server">
    <ContentTemplate>
        // ...Contents of UpdatePanel...
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID=[Insert CheckBox Unique ID here] EventName="Click" />

            //... n AsyncPostBackTriggers, one for each CheckBox ...

        <asp:AsyncPostBackTrigger ControlID=[Insert CheckBox Unique ID here] EventName="Click" />
    </Triggers>
</asp:UpdatePanel>

//…UpdatePanel的内容。。。
//... n个AsyncPostBackTriggers,每个复选框一个。。。
但是我意识到我动态创建的复选框没有唯一的ID,所以我无法设置AsyncPostBackTrigger的ControlID。有没有办法在代码隐藏中设置ASP.NET控件的唯一id

到目前为止,我试过:

for (int i=0; i<n; i++)
{
    AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
    trigger.ControlID = checks[i].UniqueID;
    trigger.EventName = "Click";
    upPanel.Triggers.Add(trigger);
}

for(int i=0;i您可以设置所创建控件的
ID
属性。

当您尝试设置
UniqueID
属性时会发生什么?选中[i]。UniqueID=“checkbox\u”+Convert.ToString(i);它说UnieuqID属性是只读的,不能像那样编辑。请尝试该属性。很好,这很有效!但现在我遇到了另一个问题。我想使用此方法来摆脱回发,但面板似乎没有按预期更新。我将保留该属性以回答其他问题。谢谢!