【问题标题】:Cannot Access the Controls inside an UpdatePanel无法访问 UpdatePanel 中的控件
【发布时间】:2009-12-23 18:00:09
【问题描述】:

我要做的是在 Page_Load 访问页面控件,并进行数据库查询,并使控件可见或不可见。

代码如下:

foreach (Control thiscontrol in ContentPlaceHolderBody.Controls) {
    try {
        if (thiscontrol.ID.Contains("TextBox") || thiscontrol.ID.Contains("Label")) {
            string dummy = thiscontrol.ID;
            bool IsValid = db.Roles.Any(a => a.controlName == dummy);
            if (IsValid == false)
                thiscontrol.Visible = false;
        }
        else if (thiscontrol.ID.Contains("UpdatePanel")) {
            foreach (Control UPcontrols in ((UpdatePanel)thiscontrol).ContentTemplateContainer.Controls) {
                if (UPcontrols.ID.Contains("TextBox") || UPcontrols.ID.Contains("DropDownList")) {
                    bool UPIsValid = db.Roles.Any(a => a.controlName == UPcontrols.ID);
                    if (UPIsValid == false)
                        UPcontrols.Visible = false;
                }
            }
        }
    }
    catch { }
}

我的问题是UPcontrols!它应该检索UpdatePanel 中的控件,但问题是它不做它的工作,除非在调试模式下!

当我添加断点时,一切正常,但是当我运行 Web 应用程序时,它在 UpdatePanel... 中找不到任何组件...

【问题讨论】:

  • 上下文?您使用什么语言/库?

标签: asp.net ajax updatepanel


【解决方案1】:

试试这个:

ControlCollection cbb = updatepanel1.Controls;
ControlCollection cb = cbb[0].Controls;

initialize_Controls(cb);

public void initialize_Controls(ControlCollection objcontrls)
{

    foreach (Control tb in objcontrls) {
        if (tb is TextBox)
            ((TextBox)tb).Text = "";


        if (tb is Panel) {
            ControlCollection cbcll = tb.Controls;

            foreach (Control tbb in cbcll) {
                if (tbb is TextBox)
                    ((TextBox)tbb).Text = "";
            }
        }
    }
}

首先从updatepanel找到控件,即ContentTemplate,然后从contentTemplate找到包含所有控件的控件。

【讨论】:

    【解决方案2】:

    这似乎是一个非常奇怪的设计。也就是说,将控件 ID 用于此类目的是相当不寻常的。

    尽管如此,您需要一个递归方法来对页面上的 每个 控件进行深度遍历。如果 UpdatePanel 包含在另一个控件中,您的方法将不起作用。

    【讨论】:

      【解决方案3】:
      猜你喜欢
      • 1970-01-01
      • 2010-10-17
      • 2019-04-05
      • 2010-10-18
      • 1970-01-01
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多