使用FindControl("id")查找控件 返回值都是Null的问题

做了一个通过字符串ID查找页面控件并且给页面控件赋值的功能,过程中遇到了this.FindControl("id")返回值都是Null的问题,记录一下解决办法。

问题的原因是我所要查找的ID控件的父控件不是this所造成的。

所以我写了一个递归方法获取控件:

 1 /// <summary>
 2 /// 获取页面中某个控件
 3 /// </summary>
 4 /// <param name="control">父控件容器</param>
 5 /// <param name="id">控件ID</param>
 6 /// <returns></returns>
 7 public Control GetControl(Control control, string id)
 8         {
 9             Control con = control.FindControl(id);
10             if (con == null)
11             {
12                 if (control.HasControls())
13                 {
14                     foreach (Control c in control.Controls)
15                     {
16                         con = GetControl(c, id);
17                         if (con == null)
18                             continue;
19                         else
20                             break;
21                     }
22                 }
23                 else
24                 {
25                     return null;
26                 }
27             }
28             return con;
29         }

使用方法 :TextBox txt = GetControl(this, “textBox1”) as TextBox; //在当前页面中查找ID为“textBox1” 的TextBox控件。

时间: 2024-10-06 17:56:03

使用FindControl("id")查找控件 返回值都是Null的问题的相关文章

[转] WinForm自定义函数FindControl实现按名称查找控件

原文地址 WinForm自定义函数FindControl实现按名称查找控件 本文所述实例实现WinForm自定义函数FindControl实现按名称查找控件的功能,在C#程序开发中有一定的实用价值. /// <summary> /// 按名称查找控件 /// </summary> /// <param name="parentControl">查找控件的父容器控件</param> /// <param name="find

Dynamic CRM 2013学习笔记(八)过滤查找控件 (类似省市联动)

我们经常要实现类似省市联动一样的功能,常见的就是二个查找控件,一个选择了省后,另一个市的查找控件就自动过滤了,只显示当前省下的市,而不是所有的市.当然这是最简单的,实际工作中还有更复杂的功能要通过过滤查找控件来实现.本文主要介绍基本的查找控件过滤.多表关联的复杂过滤以及子表里实现查找控件的过滤.   一.简单的过滤 先看下需求: 按"Special GL Indicator" 来过滤 Posting 查找控件增加了preSearch事件.它发生在查找控件显示对话框供用户查找记录之前,与

JavaScript经典代码【一】【javascript HTML控件获取值】

javascript HTML控件获取值 1.下拉列表框选定值 ddlPageSize.options[ddlPageSize.selectedIndex].value ddlPageSize.options[ddlPageSize.selectedIndex].text 复选框 $get('chkGoogle').checked 控件隐藏与显示: document.getElementById("控件名").style.display='' //显示 document.getElem

winform窗体中查找控件

private RichTextBox FindControl()        { RichTextBox ret = null;            try            {                Control[] controls = Application.OpenForms["MainForm"].Controls.Find("txtContent", false);                if (controls != nul

Jquary获取页面控件的值

一 Jquery获得服务器控件值的方法由于ASP.NET网页运行后,服务器控件会随机生成客户端id,jquery获取时候不太好操作,google了下,总结有以下3种方法: 服务器控件代码:<asp:TextBox ID="txtUserID" runat="server"></asp:TextBox> 1. $("#<%=txtUserID.ClientID%>").val(); 2. $("inpu

javascript获取asp.net服务器端控件的值

代码如下: <%@ Page Language="C#" CodeFile="A.aspx.cs" Inherits="OrderManage_A" %> <%@ Register Src="../UserControl/CtrlCalendar.ascx" TagName="CtrlCalendar" TagPrefix="uc1" %> <html>

实时监测input控件value值动态变化的事件

目录 [1]input [2]propertychange [3]兼容处理 前面的话 HTML5为input控件新增了很多type属性,大大增加了input控件的应用场景.其中一个是type="range"的input控件,可以通过拖动游标改变value值,但并不是所有浏览器都可以实时显示,除了IE10+浏览器 说到改变value值的事件,首先想到的便是change事件,但change事件的触发条件是失去焦点并且value值改变.而游标拖动并没有失去焦点.所以,change事件并不能达

【完全开源】百度地图Web service API C#.NET版,带地图显示控件、导航控件、POI查找控件

目录 概述 功能 如何使用 参考帮助 概述 源代码主要包含三个项目,BMap.NET.BMap.NET.WindowsForm以及BMap.NET.WinformDemo. BMap.NET 对百度地图Web Service API 的一些封装,每个接口返回的都是JObject类型(参见Json.NET): BMap.NET.WindowsForm(开始少写了一个s ,后来一直没改) 提供一系列可以在Winform中使用的控件,包括地图显示控件.导航控件.POI查找控件等等: BMap.NET.

如何获取Iframe的页面控件的值

有时候我们在页面需要使用iframe的方法来引用另一个页面,虽然个人建议不要使用iframe哈,但是有些时候是没得法了才使用的咯,那么在使用的过程中也会遇到某一些问题,我将自己遇到的问题记录下来方便以后的朋友在遇到了此问题少走弯路!!! 假如我首页index.hmtl使用了iframe引用了child.html页面代码如下: <div> <div class="panel panel-default"> <div> <div class=&qu