遍曆ASP.NET頁面控制項

來源:互聯網
上載者:User
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()






聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.