【问题标题】:Dynamically access the control name in code behinde在后面的代码中动态访问控件名称
【发布时间】:2016-01-18 11:43:02
【问题描述】:

我有一系列 div,我想根据登录用户的 userGroup 显示/隐藏它们。

<div id="divUserGroup1" runat="server" visible ="false"> 
</div>
<div id="divUserGroup2" runat="server" visible ="false"> 
</div>
<div id="divUserGroup3" runat="server" visible ="false"> 
</div>

我使用以下方法来检索用户组。

userGroup = Convert.ToInt32(Session["userGroup"]);

有没有比以下更好的方法。

if (userGroup == 1)
{
     divUserGroup1.Visible = true;
}
else if (userGroup == 2)
{
     divUserGroup2.Visible = true;
}

我在想某种 divUsergroup" + userGroup + ".Visible = True

但我什么都做不了。

谢谢

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    您可以使用Page.FindControl 按名称查找控件:

    Control c = this.FindControl("divUsergroup" + userGroup);
    
    if (c != null) // it exists?
    {
        c.Visible = true;
    }
    

    (请注意,这只查找顶级控件)

    【讨论】:

    • 我收到此错误 c.Visible = 'c.Visible' 引发了“System.NullReferenceException”类型的异常。我也尝试更改“divUsergroup”以匹配我的 div 的大小写。
    • 这就是这样做的方法。如果您的代码不起作用,请发布您的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 2011-09-05
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多