首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

未通过FindControl找到动态生成的控件

是指在ASP.NET开发中,使用FindControl方法无法找到在运行时动态生成的控件。

动态生成控件是指在页面加载或其他事件触发时,通过代码动态创建的控件,而不是在设计时静态添加在页面上的控件。这种方式可以根据需要灵活地生成控件,但也会带来一些问题,如无法直接通过FindControl方法找到这些动态生成的控件。

解决这个问题的方法有多种,以下是一些常见的解决方案:

  1. 使用递归查找:可以编写递归方法,在页面的控件树中逐层查找目标控件。这种方法可以通过遍历页面上的所有控件,找到目标控件并返回。
  2. 使用命名容器:在动态生成控件时,可以将它们添加到一个命名容器中,如Panel或PlaceHolder控件。然后可以通过FindControl方法在该容器中查找目标控件。
  3. 使用UniqueID属性:动态生成的控件会自动分配一个唯一的ID,可以通过控件的UniqueID属性来查找目标控件。这个属性可以在页面的生命周期中保持唯一性。
  4. 使用ViewState或Session:如果动态生成的控件需要在页面的不同事件之间保持状态,可以将其保存在ViewState或Session中。在需要访问控件时,可以从ViewState或Session中获取控件的引用。
  5. 使用事件处理程序:可以在动态生成控件时为其添加事件处理程序,并在事件处理程序中进行相应的操作。这样可以避免直接查找控件的问题。

总结起来,未通过FindControl找到动态生成的控件可以通过递归查找、命名容器、UniqueID属性、ViewState或Session、事件处理程序等方法来解决。具体的解决方案可以根据实际情况选择。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Page.FindControl方法找不到指定控件的原因

在ASP.NET 2.0中,引入了MasterPage的机制,在当前页使用MasterPage的情况下,放在 ContentPlaceholder1这样的内容页的控件无法用Page.FindControl...MSDN对FindControl的解释:在当前的命名容器中搜索带指定 id 参数的服务器控件 这里有一篇文章阐述阐述FindControl方法和INamingContainers接口:http://www.odetocode.com.../Articles/116.aspx FindControl方法是在当前naming container查找指定ControlID对应的控件,该naming container是一个实现了INamingContainer...可以在该页的页指令中添加 Trace=Ture 指令来跟踪页面输出查看控件树。...很多时候,因为是动态控件,明知道是在同一个naming container中,但不知道该naming container是什么对象,一个控件要找到另一个控件,可以用this.Parent.FindControl

1.4K70

C# Web控件与数据感应之数据返写

关于数据返写 数据感应也即数据捆绑,是一种动态的,Web控件与数据源之间的交互,数据返写 ,是指将查询出来的数据,通过可显示数据的UI控件进行数据输出,如查询详情页,见下图: 如图其中放置了一些标签(Label...本文将介绍如何中通过 C# 实现查询并返写数据到服务器UI控件上。...-413a-a87a-f5fa338b2f2c' and wxmpcid='21f4c424-a1df-4161-be1b-ce441e058be6' 最后我们将数据填充到 DataReader ,并生成对应的二维数组...FindControlEx 实现了对 FindControl 方法的扩充,如果查找不成功可试图查找是否有母版页,如果存在,则根据母版页模式继续查找。...FindControlEx 方法 FindControlEx 通过传递要查找的服务器容器控件和ID参数,以返回查找到的控件,代码如下: public Control FindControlEx(Control

10210
  • qt中QHBoxLayout或QVBoxLayout布局内控件的动态生成与显示

    —恢复内容开始— #qt中QHBoxLayout或QVBoxLayout布局内控件的动态生成与显示 打个比方,我现在写个小例子,这个小例子是这样的,整个界面分为俩个部分,分为上半部分和下半部分,上半部分为...其实实现QHBoxLayout布局内控件的动态显示的核心函数实现就是**DynamicLayout**。...这个函数的核心的思路分为俩个部分,第一步就是先将原来布局内已经存在的控件先进行清空,第二步进行动态的控件生成。.../download.csdn.net/download/qq130106486/10707414 ---恢复内容结束---#qt中QHBoxLayout或QVBoxLayout布局内控件的动态生成与显示...这个函数的核心的思路分为俩个部分,第一步就是先将原来布局内已经存在的控件先进行清空,第二步进行动态的控件生成。

    1K30

    C# Web控件与数据感应之属性统一设置

    关于属性统一设置 数据感应也即数据捆绑,是一种动态的,Web控件与数据源之间的交互,属性统一设置 ,是指业务规则,通过配置数据,统一对数据控件的属性进行赋值,以达到灵活应用的目的。...,'现工作单位') insert into cfg_ypz (fname,cname) values('cjgzsj','参加工作时间') 最后我们将数据填充到 DataReader ,并生成对应的二维数组...(1)2个值的情况,指要赋值控件的前缀,后面为属性名称,如 new string[] { "x_", "onclick" } 表示为按主控件名+x_前缀名进行查找,并赋予 onclick 属性(值 根据数据配置表进行设置...FindControlEx 实现了对 FindControl 方法的扩充,如果查找不成功可试图查找是否有母版页,如果存在,则根据母版页模式继续查找。...FindControlEx 方法 FindControlEx 通过传递要查找的服务器容器控件和ID参数,以返回查找到的控件,代码如下: public Control FindControlEx(Control

    11310

    GridView实战一:自定义分页、排序、修改、插入、删除

    ,本文和后面的另一篇GridView实战二:使用ObjectDataSource数据源控件均是这段时间的一些总结。   ...禁用时就是控件初始化时的selectedIndex或第一个选项。...因为DropDownList包含在GridView中是动态生成的,当PostBack时GridView并不会恢复其中的动态内容;如果把分页功能放在GridView以外实现,那么动态生成的时DropDownList...2.排序:通过DataTable.DefaultView来实现,用一个ViewState变量存放最近一次的排序方向的反方向,来使每次排序的方向都不同。...总结:   不适用数据源控件的优点是,新增记录时可以马上看到新增的记录;缺点是即使实现了分页功能,但每次还是从数据库中读取全部数据,效率低。

    2.8K100

    VS2008(C#)子页嵌套母版页的控件访问方法(三)

    VS2008(C#)子页嵌套母版页的控件访问方法(三)——嵌套三层母版页的子页 子页嵌套了三层母版页后,依次访问第一层、第二层、第三层母版页控件的实现方法如下: 第一层母版页HTML代码 的控件(此时已为第二层)         ContentPlaceHolder cpMaster1 = (ContentPlaceHolder)Master.Master.Master.FindControl...("ContentPlaceHolder1");         //第一层母板找到第二层母板的ContentPlaceHolder,来访问其中的控件(此时已为第三层)         ContentPlaceHolder...,来访问其中的控件(此时已为第二层)         ContentPlaceHolder cpMaster1 = (ContentPlaceHolder)Master.Master.Master.FindControl...("ContentPlaceHolder1");         //第一层母板找到第二层母板的ContentPlaceHolder,来访问其中的控件(此时已为第三层)         ContentPlaceHolder

    1.1K30

    GridView数据库分页+自定义分页导航(二):自定义分页导航。首页、上一页、下一页、尾页和跳转

    先进入模板编辑模式,选择【PagerTemplate】,添加自己所需的导航控件 ?...列入这样的,上一页和下一页和GO使用【LinkButton】,也可使用其他的控件,【注:LinkButton 在编译后是HTML的a标签】, ?...这里的页数使用ViewState[]存储,因为,在点击控件后,会进行一个提交,控件默认submit的,提交后的变量值都会被清空,而ViewState可以存储我们的变量值。...现在,我们试着将上一页和下一页的功能完善,在首页和上下页等控件上加上:onClick="Page_OnClick"(这里一定要加),然后CommandArgument="Next",在Page_OnClick...然后就是跳转,我们要获取到下拉框选中的值,然后进行跳转,这句的作用是找到GridView的底部的Pager行,并在这行中找到“pageLIst”这个控件,再获取他的值,我只有用这句才能获取到值,如果大家有其他方式获取到

    1.7K10

    给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler

    又找到了自定义分页控件开发 看了几遍,还是比较迷糊,最后把《自定义分页控件开发》 里提供的代码down下来看了一下,终于有点明白了。     ...我们的目的是要给自定义控件加一个事件,以便可以控制Label的Text属性。 1、内部事件。     这个好像是我起的名称,就是只在自定义控件的内部相应的事件,使用控件的页面不用相应相关的事件。... lbl = (Label)EventTest1.FindControl("lbl");             lbl.Text += "外部的事件,Hello" ;         }     ...自定义控件的事件已经整理清楚了,我可以修改分页控件里的代码了,原来写的比较混乱。分页控件的下一个版本(v2.0.0.3)将增加两个事件,这样就可以向吴旗娃的分页控件那样灵活使用了。...)this.FindControl("lbl");             lbl.Text += "控件内部的事件,hi";             //调用外部事件             TestClick

    1.2K70

    动态控件的新思路

    常常有如此感叹:动态控件好加,但是状态维持困难。就是说,加入动态控件很容易,关联处理事件也不难,但是对于控件的状态把握,却很麻烦。...往往需要在load时重新加载一次动态控件,总之处理起来很烦。         今天尝试了一个新的思路,很简单,在页面最下方直接放上控件,隐藏,加载时加载它即可。这样,状态也能够轻松保持了。...实际上,它是一个静态控件。         用于:动态控件数目确定的情况。         后续:发现这种方式也有问题。      ...* 如果采用动态控件,最大的问题是要处理状态,非常麻烦,牵扯过多。最后,采用一个简单的方案,通过Request.Form       * 集合采集值。...具体操作时,因为ID比较复杂,所以采用了遍历比较的方法。FindControl不管用       */

    93970

    C# Web控件与数据感应之 BaseDataList 类

    关于数据感应 数据感应也即数据捆绑,是一种动态的,Web控件与数据源之间的交互,本文将继续介绍以与数据库提取数据并捆绑控件为例,讲解 C# 创建适用于 BaseDataList 类(如DataGrid)...BaseDataList 类 BaseDataList 类是包括如 DataList 、DataGrid 服务器控件的基类,本文我们以 DataGrid 服务器控件控件,并结合 MS SQL SERVER..., 生成数据源需要利用 ADO.NET 中的数据提供者对象包括IDbConnection、IDbCommand、IDbDataParameter等,如何使用这些对象请参考我的文章: 《C#实现 IDbConnection...BaseDataList 用于捆绑 BaseDataList 的控件,如DataGrid 6 DisplayFieldList string 用于捆绑到 BaseDataList 的控件上的字段列表,以逗号进行分隔...DataGrid 控件和一系列的导航按钮等控件,前端示例代码如下: <table border="0" cellpadding="0"

    8610

    基类、接口的应用——表单控件:一次添加、修改一条记录,一次修改多条记录。(上)

    通过对一个实际中的例子的讨论,可以让新同学更好的理解吧。 针对的框架: 目前只考虑 asp.net1.1  (webform)。 先贴个图片,就是这样的表单 ?...我想写一个方法(GetValue)来获取用户输入的数据,而且在取值的时候不必关心是什么控件,一个GetValue,就把值得到了,管它是什么控件呢!...控件比较多,我就只贴出 HBSCheckBoxList 的代码吧,其他的都是类似的写法。...我想达到的是  ((IGetControlValue)Page.FindControl("控件ID")).GetControlValue(); 这样做的好处是我只要知道控件的ID就可以得到数据,而不必去关心到底是什么控件...最大的优点就是:当控件在DataGrid的列的位置发生变化的时候,修改是很方便的。 什么?您问取值的地方在哪里?已经被我封装起来了。

    1.1K50

    使用AspNetPager与GridView完成分页

    由于GridView的分页功能实在是太弱了,所以需要使用强大的AspNetPager来作为分页控件。...最简单的办法就是GridView控件下面接着放一个AspNetPager控件,但是这样好像就不能用GridView的分页功能了。在数据量不大的情况下,使用GridView的分页是十分方便有效的。...另外还有一个问题就是分页控件在GridView生成的表格的下面,而没有像GridView自带分页那样包含到表格内部,这点也不是很爽。...这个问题的解决可不像前面那么简单了,通过设置属性CurrentPageIndex的方式AspNetPager根本不认!...Bind();//GridView的数据绑定方法     Wuqi.Webdiyer.AspNetPager pager = this.GridView1.BottomPagerRow.FindControl

    52930

    ASP.NET2.0中用Gridview控件操作数据

    在ASP.NET 2.0中,加入了许多新的功能和控件,相比asp.net 1.0/1.1,在各方面都有了很大的提高。其中,在数据控件方面,增加了不少控件,其中的Gridview控件功能十分强大。...在本文中,将探讨Gridview控件中的一些功能特性和用法,如果各位读者对Gridview控件不大了解,可以通过《 使用ASP.NET 2.0中的Gridview控件》一文,来对Gridview控件有个初步的认识...1、使用Gridview插入新记录 在Gridview控件中,可以实现插入新记录的操作(见《使用ASP.NET 2.0中的Gridview控件》)一文,但如果想实现在Gridview中,实现在Gridview...控件的最后一行,提供一个空白行给用户输入要输入的记录,那无疑是很方便的。...而在更新代码button1_click事件中,将首先使用Gridview1.footerrow.findcontrol的方法,将用户新增的各字段的值提取出来,然后分别赋值给sqldatasource的insertparameters

    1.5K10

    GridView实战二:使用ObjectDataSource数据源控件

    前言:   ObjectDataSource数据源控件优点甚多,确实令人爱不惜手,但不支持重绑定这一项确实让人失望。...下面的实战二将通过ObjectDataSource配合GridView来实现删、改、分页、排序,并分析使用cache后排序失灵的原因。 实战: 1.效果: ? 图1.显示状态 ?...3.排序功能上只要在ods上设定SortParameterName,它的值就是SelectMethod中关于排序的参数的名称,然后设定GridView的AllowSorting为true就ok了。...ddlPaging.SelectedIndex = this.gv.PageIndex; 76 } 77 } 78 79 /// 80 /// 分页控件的...对于该问题目前还没找到解决的方法,望大哥们来告诉我啦^_^ 好消息:对于上面的问题终于找到了解决方法,就是自定义一个缓存层而不使用ods附带的缓存功能。

    1.7K100
    领券