最近在使用formview,但是发现有个问题就是无法通过遍历controls获得formview里的控件,但是确可以通过findcontrol方法获取.在formview的controls里只有个一个控件,类型是System.Web.UI.WebControls.ChildTable,根本不是想要的那个controls.于是从findcontrol下手,msdn里说的是从namingcontainer里查找控件,既然查找估计也是用遍历的方式.那么就必须找到所需要控件的那个namingcontainer.获得的方法很简单,那就是显示findcontrol找到一个控件,比如txtName,然后获取txtName的Parent也就是我们要的namingcontainer.而这时的namingcontainer所包含的controls就是我们想要的那个,之后的操作就简单拉.
代码如下
![](/Images/OutliningIndicators/ContractedBlock.gif)
遍历formview
1
// fv 是formview实例
2
WebControl txtName = (WebControl)fv.FindControl("txtName");
3![](/Images/OutliningIndicators/None.gif)
4
// 从parent中获取Controls
5
ControlCollection ctls = txtName.Parent.Controls;
6![](/Images/OutliningIndicators/None.gif)
7
foreach (Control ctl in ctls)
8![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
9
//
..
10
}