【问题标题】:FindControl - can't find dropdownlistFindControl - 找不到下拉列表
【发布时间】:2012-01-09 15:11:17
【问题描述】:

我有一个下拉列表:

<asp:DropDownList ID="ddlGoalKeeper" runat="server">
                </asp:DropDownList>

一个可爱的小家伙。我有一些代码可以找到它:

DropDownList myControl1 = (DropDownList)Page.FindControl("ddlGoalKeeper");

不是.. 只是我的myControl1 没有设置...所以当我稍后在我的代码中尝试将可见设置为 true 时,它​​不起作用。

有什么想法吗?

【问题讨论】:

  • 为什么要使用 Page.Findcontrol 来访问下拉菜单?为什么不使用“ddlGoalKeeper”来设置可见
  • 使用ddlGoalKeeper.Visible有什么问题?
  • 它很可能是Repeater的一部分,或者类似的东西。在这种情况下,您将找不到具有这种逻辑的它,您必须使用 ItemDataBound 事件并在那里处理控件。
  • 我想更改字符串 = ddlGoalKeeper,并且我不想使用 28 个不同的 if 语句来将我的所有 ddl 设置为可见

标签: c# asp.net drop-down-menu findcontrol


【解决方案1】:

我遇到的一个不工作的原因是控制是否是网站使用母版页的时候。

您可以使用这个想法,首先获取母版页的引用,然后从内容页获取正确的控件:

 ContentPlaceHolder MainContent = Page.Master.FindControl("MainContent") as ContentPlaceHolder;
 DropDownList myControl1 = (DropDownList)MainContent.FindControl("ddlGoalKeeper");

【讨论】:

    【解决方案2】:

    为什么不设置 ddlGoalKeeper.Visible = true;直接?

    【讨论】:

      【解决方案3】:

      我不确定您为什么要尝试使用FindControl,如果您想切换可见性,最简单的方法是使用ddlGoalKeeper.Visible,因为该控件可用。

      如果它包含在某个其他控件中,比如一个网格,那么您必须在父控件中找到它,就像在网格的特定行中一样 [gridrow1].FindControl("ddlGoalKeeper"),那么它会更有意义。

      【讨论】:

        猜你喜欢
        • 2017-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-06
        • 1970-01-01
        • 2012-01-24
        相关资源
        最近更新 更多