首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找HtmlGenericControl

查找HtmlGenericControl
EN

Stack Overflow用户
提问于 2011-03-11 01:00:51
回答 3查看 17.3K关注 0票数 3
代码语言:javascript
复制
   System.Web.UI.HtmlControls.HtmlGenericControl div = (System.Web.UI.HtmlControls.HtmlGenericControl)pnl.Controls[0].FindControl("divMessage");

我正在尝试查找类似上面的divMessage,但我得到的结果为空...:

下面是我的div所在的位置。

代码语言:javascript
复制
 <mobile:Panel ID="pnl" Runat="server">
   <mobile:DeviceSpecific ID="device" runat="server">
            <ContentTemplate>
          <div id="divMessage" runat="server">test.....</div>
       </ContentTemplate>
          </mobile:DeviceSpecific>
 </mobile:Panel>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-11 02:42:39

这应该会找到您需要的div

代码语言:javascript
复制
var div = (HtmlGenericControl)pnl.Controls[0].FindControl("divMessage");

我创建了一个新页面,并通过它进行了测试:

代码语言:javascript
复制
<%@ Page Language="C#" Inherits="System.Web.UI.MobileControls.MobilePage" %>
<%@ Register TagPrefix="mobile"
    Namespace="System.Web.UI.MobileControls"
    Assembly="System.Web.Mobile" %>

<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        var div = (HtmlGenericControl)pnl.Controls[0].FindControl("divMessage");
    }

</script>
<body>
    <mobile:form id="form1" runat="server">

    <mobile:panel id="pnl" runat="server">
        <mobile:DeviceSpecific ID="device" runat="server">
            <Choice>
                <ContentTemplate>
                    <div id="divMessage" runat="server">test.....</div>
                </ContentTemplate>
            </Choice>
        </mobile:DeviceSpecific>
    </mobile:panel>

    </mobile:form>
</body>
</html>

div变量包含所需的控件。

票数 6
EN

Stack Overflow用户

发布于 2011-03-11 02:08:04

查找控件的最简单方法是执行递归搜索,因为您当前的方法可能会由于控件的嵌套方式而失败。

代码语言:javascript
复制
/// <summary>
/// Recursive FindControl method, to search a control and all child
/// controls for a control with the specified ID.
/// </summary>
/// <returns>Control if found or null</returns>
public static Control FindControlRecursive(Control root, string id)
{
    if (id == string.Empty)
        return null;

    if (root.ID == id)
        return root;

    foreach (Control c in root.Controls)
    {
        Control t = FindControlRecursive(c, id);
        if (t != null)
        {
            return t;
        }
    }
    return null;
}

然后,您可以通过以下方式使用此方法:

代码语言:javascript
复制
HtmlGenericControl div = (HtmlGenericControl) FindControlRecursive(pnl, "divMessage");
票数 3
EN

Stack Overflow用户

发布于 2011-03-11 02:05:29

我认为问题是因为pnl控件不包含divMessage。您必须向下迭代包含的控件才能找到它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5263086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档