代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Asp.Net
】
ASP.NET 递归 FindControl
作者:
大豆男生
/ 发布于
2012/3/22
/
625
一般 FindControl 函数只能找到第一层子控件,像 GridView、FormView 之类的复合式控件,要寻找包含的子控件就非常麻烦,要找到父控件(容器),才能使用 FindControl 去找到子控件。而且一旦所有往上的父控件有任一层的变更时,就需要再去修改程序代码,这样就非常麻烦。为了解決此的问题,可以使用递归的方式來进行 FindControl 的操作
<div><span style="color: rgb(128, 128, 128);">///</span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(128, 128, 128);"><summary></span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(128, 128, 128);">///</span><span style="color: rgb(0, 128, 0);"> 递归查找找指定ID的控件 </span><span style="color: rgb(128, 128, 128);">///</span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(128, 128, 128);"></summary></span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(128, 128, 128);">///</span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(128, 128, 128);"><param name="Parent"></span><span style="color: rgb(0, 128, 0);">父控件(控件容器)</span><span style="color: rgb(128, 128, 128);"></param></span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(128, 128, 128);">///</span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(128, 128, 128);"><param name="id"></span><span style="color: rgb(0, 128, 0);">要查找的控件ID</span><span style="color: rgb(128, 128, 128);"></param></span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(128, 128, 128);">///</span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(128, 128, 128);"><returns></span><span style="color: rgb(0, 128, 0);">回传符合ID的控件,若未找到则返回Null</span><span style="color: rgb(128, 128, 128);"></returns></span><span style="color: rgb(128, 128, 128);"> </span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);"> System.Web.UI.Control FindControlEx(System.Web.UI.Control parentControl, </span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);"> id) { System.Web.UI.Control control </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">; </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">先使用 FindControl 去查找指定的子控件</span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(0, 0, 0);"> control </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> parentControl.FindControl(id); </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">如果未找到则往下层递归方式去查找</span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (control </span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">) { </span><span style="color: rgb(0, 0, 255);">foreach</span><span style="color: rgb(0, 0, 0);"> (System.Web.UI.Control oChildCtrl </span><span style="color: rgb(0, 0, 255);">in</span><span style="color: rgb(0, 0, 0);"> parentControl.Controls) { </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">以递归方式回调原函数</span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(0, 0, 0);"> control </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> FindControlEx(oChildCtrl, id); </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">如果找到指定控件则退出循环</span><span style="color: rgb(0, 128, 0);"> </span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);"> (control </span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">) </span><span style="color: rgb(0, 0, 255);">break</span><span style="color: rgb(0, 0, 0);">; } } </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> control; }</span></div>
试试其它关键字
递归
FindControl
同语言下
.
gzip压缩
.
实现http多线程断点续传下载文件
.
实现多线程断点续传下载大文件
.
生成字符串的 CheckSum
.
根据 UserAgent 获取浏览器的类型和版本
.
根据 Agent 判断是否是智能手机
.
隐藏手机号中间四位为*方法
.
合并图片(二维码和其他图片合并)
.
ASP.NET CORE中判断是否移动端打开网页
.
ASP.NET(C#)实现页面计时(定时)自动跳转
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
大豆男生
贡献的其它代码
(
8
)
.
Base62编码和短网址
.
C# 给程序添加许可
.
ASP.NET 递归 FindControl
.
C# 执行SQL脚本文件
.
WinForm 最大化、最小化、关闭按钮事件的拦截
.
WebBrowser禁止在新窗口打开
.
SQL Server 自动增长清零
.
C# 给程序添加许可
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3