【问题标题】:How to update ID of a control from usercontrol如何从 usercontrol 更新控件的 ID
【发布时间】:2013-11-29 16:54:37
【问题描述】:

我有一个 div 控件 id="mainblock"

的 aspx 页面

我创建了一个用户控件,它根据登录页面动态检索值。

我必须将此值作为 id 传递给 div id="mainblock",以便将其 id 更改为该值。

我正在尝试很多事情,但根本无法工作。

首先我尝试在用户控件中编写服务器端代码以像这样进行更新

 protected void Page_Load(object sender, EventArgs e)
    {
     divid = dynamicid();

        var control = this.Page.FindControl("mainblock");
        if (control != null)
        {
            control.ID = divid.ToString();                
        }
       }

这不会改变父页面中 DIV 的 id。

我尝试使用 javascript 从用户控件的控件中复制内部文本并像这样更新当前页面控件 id

 <script type="text/javascript">
    document.getElementById('mainblock').id = document.getElementById('<%=   usercontrolidvalue.ClientID %>').innerText;
    </script>

这给了我这个错误.. 仅允许直接在包含内容控件的内容页面中使用内容控件。

有没有办法可以从 usecontrol 更新控件的当前 ID

请帮忙

【问题讨论】:

    标签: javascript asp.net user-controls


    【解决方案1】:

    您无法从代码隐藏中更改 ID 的值。但是,您可以从 aspx 代码中设置客户端 ID。

    你有一组有限的 id 值吗?然后你可以在 aspx 中这样做:

    <div runat="server" clientidmode="Static" id="div1">one</div>
    <div runat="server" clientidmode="Static" id="div2">two</div>
    <div runat="server" clientidmode="Static" id="div3">three</div>
    <div runat="server" clientidmode="Static" id="div4">four</div>
    

    然后从您的代码隐藏中根据需要设置可见性:

    //Condition...
    div1.Visible = false; //will not render
    div2.Visible = false; //will not render  
    div3.Visible = false; //will not render
    div4.Visible = true; //the only one shown
    

    这将在您的输出 HTML 中只留下 div 4。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多