ASP.NET 递归 FindControl

 一般 FindControl 函数只能找到第一层子控件,像 GridView、FormView 之类的复合式控件,要寻找包含的子控件就非常麻烦,要找到父控件(容器),才能使用 FindControl 去找到子控件。而且一旦所有往上的父控件有任一层的变更时,就需要再去修改程序代码,这样就非常麻烦。
    为了解決此的问题,可以使用递归的方式來进行 FindControl 的操作。见下面的 FindControlEx 方法。

ContractedBlock.gif ExpandedBlockStart.gif 代码
///   <summary>
///  递归查找找指定ID的控件
///   </summary>
///   <param name="Parent"> 父控件(控件容器) </param>
///   <param name="id"> 要查找的控件ID </param>
///   <returns> 回传符合ID的控件,若未找到则返回Null </returns>
public   static  System.Web.UI.Control FindControlEx(System.Web.UI.Control parentControl,  string  id)
{
    System.Web.UI.Control control 
=   null ;
    
// 先使用 FindControl 去查找指定的子控件
    control  =  parentControl.FindControl(id);
    
// 如果未找到则往下层递归方式去查找
     if  (control  ==   null )
    {
        
foreach  (System.Web.UI.Control oChildCtrl  in  parentControl.Controls)
        {
            
// 以递归方式回调原函数
            control  =  FindControlEx(oChildCtrl, id);
            
// 如果找到指定控件则退出循环
             if  (control  !=   null break ;
        }
    }
    
return  control;
}

 

主要参考文章链接:http://www.cnblogs.com/anjou/archive/2009/12/14/1623713.html

转载于:https://www.cnblogs.com/alexworks/articles/1624083.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值