日期:2014-05-17  浏览次数:20557 次

FindControl无法获取动态生成的控件的解决办法
本帖最后由 xyytcs 于 2013-07-05 21:11:16 编辑
请问各位大侠有没有FindControl无法获取动态生成的控件的解决办法啊?
说明:
1. 数据库没问题,读取数据也没问题,就是要根据id获取动态生成的控件来进行相应操作。但是现在就是无法获取,一直都是空,id都是没问题的。
2. 已经百度了好久,查找了好些资料,只希望有碰到过此问题的大侠们帮忙,如有能帮忙解决问题者,分可以加倍,不是自己的经验粘贴别人的,就请不要打扰了。
控件

------解决方案--------------------
1、FindControl方法针对后台数据绑定控件的,如果是动态生成的获取不了。
2、你可以看一看生成的客户端代码,在前台用Jquery取取看。
------解决方案--------------------
引用:
请问各位大侠有没有FindControl无法获取动态生成的控件的解决办法啊?
说明:
1. 数据库没问题,读取数据也没问题,就是要根据id获取动态生成的控件来进行相应操作。但是现在就是无法获取,一直都是空,id都是没问题的。
2. 已经百度了好久,查找了好些资料,只希望有碰到过此问题的大侠们帮忙,如有能帮忙解决问题者,分可以加倍,不是自己的经验粘贴别人的,就请不要打扰了。


你是POST后找不到?Asp.net???
------解决方案--------------------
动态生成的控件,每次postback需要重新创建和加入到页面中。
------解决方案--------------------
动态生成的html标签,貌似无法通过脚本来获取以添加事件,然后操作,因为,DOM还未加载这些标签,注册事件也是于事无补

但是,有一点,你动态生成的标签,是完全可以调用前台所包含的JS方法的

基于这一点,那么,就可以在动态生成标签的时候,如下处理,添加事件,以方便操作

<a id='a1' onclick="Test(this);">测试</a>

而Test就是页面中所包含的JS方法,里面的this指向的也是该控件,都得到了,也就可以进行下一步操作
------解决方案--------------------
每次重新创建使用同样的ID,asp.net运行时会自动载入ViewState
------解决方案--------------------
如果lz是Postback的问题的话,可以看看这篇文章:

Retaining State for Dynamically Created Controls in ASP.NET applications
http://www.codeproject.com/Articles/3684/Retaining-State-for-Dynamically-Created-Controls-i
------解决方案--------------------
主要就掌握你控件生成的name的规律然后后台用request.form取值,我的测试代码如下

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>