打印本文 打印本文 关闭窗口 关闭窗口
[翻译]遍历ASP.NET页面控件
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1957  更新时间:2009/4/23 10:47:47  文章录入:mintao  责任编辑:mintao

[翻译]遍历ASP.NET页面控件

Looping Through Controls in ASP.NET

      “如何遍历ASP.NET页面所有的控件呢?“,这是在社区发问的问题中最普遍的问题之一。通常我们对这个问题的回答为:使用Page类的controls 属性来实现!这个controls 属性可以使我们获取一个控件的所有子控件,但是如果其中的一个子控件同样拥有自己的子控件,仅仅使用这个属性便很难获取ASP.NET页面所有的控件。所以,要根本解决这个问题,我们需要书写一些额外的方法以获取页面中的所有控件。

      假设页面中有若干个TextBox ,我们想遍历整个页面,然后获取所有TextBoxnamevalue ,并将它们显示在DataGrid中。

在我们开始遍历页面之前,需要建立一个类,用于存放那些TextBoxnamevalue ,代码如下:

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

 &nbs

[1] [2]  下一页

打印本文 打印本文 关闭窗口 关闭窗口