【问题标题】:Setting the UniqueId of an ASP.NET control in code behind在后面的代码中设置 ASP.NET 控件的 UniqueId
【发布时间】:2014-09-09 17:36:03
【问题描述】:

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

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>

但我意识到我动态创建的 CheckBox 没有 UniqueID,所以我无法设置 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);
}

但在调试器中,我看到了 checks[i].UniqueID = "",这并没有真正起作用。

【问题讨论】:

  • 当您尝试设置UniqueID 属性时会发生什么?
  • checks[i].UniqueID = "checkbox_" + Convert.ToString(i);它说 UnieuqID 属性是只读的,不能这样编辑。
  • 试试ID 属性。
  • 太好了,成功了!但现在我有一个不同的问题。我想使用这种方法来摆脱回发,但似乎面板没有按预期更新。我将把它留给另一个问题。谢谢!

标签: asp.net updatepanel code-behind unique-id


【解决方案1】:

您可以设置已创建控件的ID 属性。

【讨论】:

    猜你喜欢
    • 2014-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多