你用的循环只能返回页的第一层的控件,也就是你所得到的Document、form、LiteralControl!
而要返回所有的控件,要用递归来实现.
服务器端的控件都放在form容器控件内,form下面也有个controls的集合,它是第二级,如果第二层下面还有控件的话(例如datagrid下面就可能还是textbox等),你就要作第三次循环,一直到最后一级.
下面的函数用以统计页面中所有控件的个数,我从别的贴子里面贴的.通过这个你就可以遍历页面中所有的控件了.
一个递归函数:
Private Function ControlCnt(ByVal Ctrl As Object) As Integer
Dim i As Integer
For i = 0 To CType(Ctrl, Control).Controls.Count - 1
If CType(Ctrl, Control).Controls(i).Controls.Count = 0 Then
If TypeName(CType(Ctrl, Control).Controls(i))="TextBox" Then
mCnt = mCnt + 1
End if
Else
Me.ControlCnt(CType(Ctrl, Control).Controls(i))
End If
Next
End Function
而要返回所有的控件,要用递归来实现.
服务器端的控件都放在form容器控件内,form下面也有个controls的集合,它是第二级,如果第二层下面还有控件的话(例如datagrid下面就可能还是textbox等),你就要作第三次循环,一直到最后一级.
下面的函数用以统计页面中所有控件的个数,我从别的贴子里面贴的.通过这个你就可以遍历页面中所有的控件了.
一个递归函数:
Private Function ControlCnt(ByVal Ctrl As Object) As Integer
Dim i As Integer
For i = 0 To CType(Ctrl, Control).Controls.Count - 1
If CType(Ctrl, Control).Controls(i).Controls.Count = 0 Then
If TypeName(CType(Ctrl, Control).Controls(i))="TextBox" Then
mCnt = mCnt + 1
End if
Else
Me.ControlCnt(CType(Ctrl, Control).Controls(i))
End If
Next
End Function
比如定义了 Panel PanelComp ,
...
for(int i=0;i<PanelComp.Controls.Count;i++)
{
Control ctrl = PanelComp.Controls[i];
if(ctrl is DropDownList)
{
DropDownList ddl = (DropDownList)ctrl1;
//codes here ...
}
//codes here ...
}