C# 在Webform页面中列出所有更新面板ClientID
有人知道如何在列表中读出我在页面上的所有UpdatePanel客户端ID吗?基本上,我需要使用一种UpdatePanel循环遍历页面中的所有控件,并显示每个控件的ClientID 我在这个页面上有四个更新面板,我正在使用这个C# 在Webform页面中列出所有更新面板ClientID,c#,asp.net,webforms,updatepanel,C#,Asp.net,Webforms,Updatepanel,有人知道如何在列表中读出我在页面上的所有UpdatePanel客户端ID吗?基本上,我需要使用一种UpdatePanel循环遍历页面中的所有控件,并显示每个控件的ClientID 我在这个页面上有四个更新面板,我正在使用这个 private string LoopUpdatePanel(ControlCollection controlCollection) { StringBuilder sb = new StringBuilder();
private string LoopUpdatePanel(ControlCollection controlCollection)
{
StringBuilder sb = new StringBuilder();
foreach (Control control in controlCollection)
{
if (control is UpdatePanel)
{
sb.Append(((UpdatePanel)control).ClientID + ", ");
}
if (control.Controls != null)
{
LoopUpdatePanel(control.Controls);
}
}
return sb.ToString();
}
它返回一个空字符串???听起来像是一个正确的逻辑,也许您正在搜索另一组控件 您是否尝试过使用debug逐步完成并检查ID
受保护的无效页面加载(对象发送方,事件参数e)
{
尝试
{
string result=“result=”;
foreach(第页控件中的控件tmpControl)
{
类型tmpType=tmpControl.GetType();
如果(tmpControl是SiteMaster)
{
foreach(tmpControl.Controls中的控制站点MasterControlItem)
{
if(SiteMasterControlItem是System.Web.UI.HtmlControls.HtmlForm)
{
int i=0;
对于(i=0;i
最后一个循环包含contentplaceholder。你可能得更深入一点。
这是用c#4.0在VS2010上试用的
HTH不确定您正在使用什么语言或尝试了什么…请给我们一些代码,以便我们知道您尝试了什么,也许我们会发现错误 但作为一个例子,这里是如何循环控制的。只需使用您想要的属性而不是文本(在您的案例中是Id值和更新面板)。我相信获得控制的重要部分是通过整个控制层次结构,这样你就不会错过任何孩子、孙子等
private void Page_Load(object sender, System.EventArgs e)
{
LoopTextboxes(Page.Controls);
}
private void LoopTextboxes(ControlCollection controlCollection)
{
foreach(Control control in controlCollection)
{
if(control is TextBox)
{
((TextBox)control).Text = "I am a textbox";
}
if(control.Controls != null)
{
LoopTextboxes(control.Controls);
}
}
}
我认为它是一个包含母版页内容的控件 对c#4.0来说可能是新的 忽略它,使用内部循环。 只需检查一下你现在所有的控件,然后全部打印出来
另外,您在那里建立的方法没有正确返回值,您被调用的方法没有返回值,不是签名,而是当您调用类似LoopUpdatePanel(control.Controls)的方法时 我在上面添加了基于您的代码,它仍然返回一个空字符串-我在调试中运行过,它从未找到UpdatePanel类型的控件?尽管页面上有四个!是的,它似乎找不到任何更新面板?如上所述,我无法获取代码来理解什么是“SiteMaster”?我得到了红色下划线…如果没有母版页,请跳过该部分。它是一个包含母版页内容的控件,我认为对于c#4.0来说可能是新的,只需忽略它并使用内部循环即可。只需检查一下你现在所有的控件,然后全部打印出来。
private void Page_Load(object sender, System.EventArgs e)
{
LoopTextboxes(Page.Controls);
}
private void LoopTextboxes(ControlCollection controlCollection)
{
foreach(Control control in controlCollection)
{
if(control is TextBox)
{
((TextBox)control).Text = "I am a textbox";
}
if(control.Controls != null)
{
LoopTextboxes(control.Controls);
}
}
}
if (_contrl is UpdatePanel)
{
UpdatePanel _cntrl = (UpdatePanel)_contrl;
foreach (Control ctr in _cntrl.ContentTemplateContainer.Controls)
{
if (ctr is TextBox)
{
// Do Work Here
}
}
}