遍历ASP.NET页面控件

“如何遍历ASP.NET页面所有的控件呢?“,这是在社区发问的问题中最普遍的问题之一。通常我们对这个问题的回答为:”使用Page类的controls 属性来实现”!这个controls 属性可以使我们获取一个控件的所有子控件,但是如果其中的一个子控件同样拥有自己的子控件,仅仅使用这个属性便很难获取ASP.NET页面所有的控件。所以,要根本解决这个问题,我们需要书写一些额外的方法以获取页面中的所有控件。
  
  假设页面中有若干个TextBox ,我们想遍历整个页面,然后获取所有TextBox的name和value ,并将它们显示在DataGrid中。
  
  在我们开始遍历页面之前,需要建立一个类,用于存放那些TextBox的name和value ,代码如下:
  
  Public Class UtilityObj
  
  Private _name As String
  
  Private _value As String
  
  Public Sub New(ByVal Name As String, ByVal Value As String)
  
  _name = Name
  
  _value = Value
  
  End Sub
  
  Public Property Name() As String
  
  Get
  
  Return _name
  
  End Get
  
  Set(ByVal Value As String)
  
  _name = Name
  
  End Set
  
  End Property
  
  Public Property Value() As String
  
  Get
  
  Return (_value)
  
  End Get
  
  Set(ByVal Value As String)
  
  _value = Value
  
  End Set
  
  End Property
  
  End Class
  
  
  
  这个类包含两个属性:"name" 和 "value",再定义一个公有的Arraylist(oArraylist),用于存储数据。如图:
  
  
  
  
  
  
  要实现遍历ASP.NET页面所有的控件,我们还需要定义一个主要的方法。这个方法接收一个Control类型的参数,如果这个参数为textbox,则存储它的 name 和 value。
  
  代码如下:
  
  Public Sub LoopingControls(ByVal oControl As Control)
  
  Dim frmCtrl As Control
  
  oArrayList = New ArrayList
  
  For Each frmCtrl In oControl.Controls
  
  If TypeOf frmCtrl Is TextBox Then
  
  oArrayList.Add(New UtilityObj(frmCtrl.ID, DirectCast(frmCtrl, TextBox).Text))
  
  End If
  
  If frmCtrl.HasControls Then
  
  LoopingControls(frmCtrl)
  
  End If
  
  Next
  
  End Sub
  
  
  
  我们可以使用这个方法来实现遍历ASP.NET页面所有的控件
  LoopingControls(Page)
  
  DataGrid1.DataSource = oArrayList
  
  DataGrid1.DataBind()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值