注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

天涯倦客的博客

祝福你朋友永远快乐!

 
 
 

日志

 
 

遍历页面上所有TextBox控件并给它赋值为string.Empty?  

2011-12-07 22:59:15|  分类: asp.net |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

请编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
答:
foreach (System.Windows.Forms.Control control in this.Controls)
{
if (control is System.Windows.Forms.TextBox)
{
System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ;
tb.Text = String.Empty ;
}
}

上边的方法只是针对于桌面软件类的,如果要针对于web开发中怎么实现呢?

首先.aspx文件一定会包含一个:<form id="form1" runat="server"> 只有在此标记中的代码享有和后台交换。

由此:

foreach(System.Web.UI.Control ctl in this.Form.Controls){
Response.Write(ctl.ToString()+"<br />");
if (ctl is System.Web.UI.WebControls.TextBox)
{
System.Web.UI.WebControls.TextBox tb = (System.Web.UI.WebControls.TextBox)ctl;
tb.Text = string.Empty;
}
}

此处需要注意的是:System.Web.UI.Control 表示:web界面上的所有的控件,包括html控件和服务器端控件。

具体表现是:

System.Web.UI.LiteralControl 此控件在页面上是:<label></label>
System.Web.UI.HtmlControls.HtmlInputText 此控件在页面上是:<input type="text" />
System.Web.UI.WebControls.Button 此控件是服务器端:<asp:Button ID="Button1" runat="server" />

那么,如果我想限定只遍历服务器端的控件怎么办?

foreach(System.Web.UI.WebControls.WebControl ctl in this.Form.Controls){

问题就来了,因为this.Form.Controls 这个集合是包括html控件和服务器控件的,那么在遍历时,html控件转换不了服务器控件,就报错了:

无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为类型“System.Web.UI.WebControls.WebControl”。

然而,this.Form 没有WebControl属性,也就无法区分开来。

那么,如果我用this.Controls 或者 this.Page.Controls 那么结果又是如何呢?

这样一来是获取整个页面的,那么他是不会包含页面控件的子控件的。

输出结果是:

System.Web.UI.HtmlControls.HtmlHead
System.Web.UI.LiteralControl
System.Web.UI.HtmlControls.HtmlForm

所有,在遍历页面元素时,最好要知道元素块,同时获得的控件集也是评级的控件。(可以递归遍历全部控件:利用控件的HasControls属性)

  评论这张
 
阅读(563)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017