关于Asp.net的FormView控件中,用FindControl方法找不到对应控件问题
2010-05-14 09:39
337 查看
在FormView控件的不同模版里,通过编辑模版,使用了多个控件。利用FormView的FindControl查找控件引用的时候,有时候出现找不到控件的情况。
原因:主要根FormView控件的运行机制有关。FormView的DefaultMode和CurrentMode属性决定其当前运行的模版是哪个,同时相应调用相关的sql语句和后台数据进行交互绑定。
如果状态为ReadOnly或Edit,而此时的查询语句没有检索到任何数据(对应查询结果的行),那么FormView没有任何东西可以显示,故里面的所有控件可以认为没有进行初始化。这时,用FindControl当然就找不到任何对应的控件的引用。 <我出错的原因就是select语句中的参数初始时没有赋值导致没有检索到任何数据>
有趣的一点是,如果当前为insert模式时,因为其不必调用对应的insert方法先期绑定数据,所以可以认为FormView始终初始化所有控件,这时的FindControl就不会出任何问题。
顺便提一点,FormView的不同模版里,控件可以使用同一个id。例如,在不同模版里都有一个id一样的TextBox,这是可以的。因为最终只会有一份模版进行实例化并显示。
这样可以带来一定好处:
1、代码比较好写(不用对应多个不同模版的不同id的同种控件写冗余代码);
2、ViewState(页面状态)可以平滑‘继承’(因为某些控件也许不需要数据绑定,这样FormView在不同模式下切换时,因为id一样,viewstate得以保留。当然,如果不同模版里的同一个id对应不同类型控件,结果可能就糟糕了,例如一个label和一个textbox的id一样。。。)
第二点有误,经过测试,ViewState在不同模式间切换后没有保留。应该是FormView在模式切换中有一个删除ViewState的过程。当然从效率角度上来讲也确实应该这样。
原因:主要根FormView控件的运行机制有关。FormView的DefaultMode和CurrentMode属性决定其当前运行的模版是哪个,同时相应调用相关的sql语句和后台数据进行交互绑定。
如果状态为ReadOnly或Edit,而此时的查询语句没有检索到任何数据(对应查询结果的行),那么FormView没有任何东西可以显示,故里面的所有控件可以认为没有进行初始化。这时,用FindControl当然就找不到任何对应的控件的引用。 <我出错的原因就是select语句中的参数初始时没有赋值导致没有检索到任何数据>
有趣的一点是,如果当前为insert模式时,因为其不必调用对应的insert方法先期绑定数据,所以可以认为FormView始终初始化所有控件,这时的FindControl就不会出任何问题。
顺便提一点,FormView的不同模版里,控件可以使用同一个id。例如,在不同模版里都有一个id一样的TextBox,这是可以的。因为最终只会有一份模版进行实例化并显示。
这样可以带来一定好处:
1、代码比较好写(不用对应多个不同模版的不同id的同种控件写冗余代码);
2、ViewState(页面状态)可以平滑‘继承’(因为某些控件也许不需要数据绑定,这样FormView在不同模式下切换时,因为id一样,viewstate得以保留。当然,如果不同模版里的同一个id对应不同类型控件,结果可能就糟糕了,例如一个label和一个textbox的id一样。。。)
第二点有误,经过测试,ViewState在不同模式间切换后没有保留。应该是FormView在模式切换中有一个删除ViewState的过程。当然从效率角度上来讲也确实应该这样。
相关文章推荐
- 关于Asp.net的FormView控件中,用FindControl方法找不到对应控件问题
- ASP.NET FormView中编辑时的RadioButtonList控件报错,找不到匹配的Value
- 关于FormView在编辑模板下找不到控件的问题
- 关于form表单中禁用所有Asp.net 服务器控件TextBox的方法
- 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq
- 关于FormView在编辑模板下找不到控件的问题
- ASP.NET的五大数据控件(GridView,DataList,Repeater ,DetailsView,FormView)浅谈
- 关于formview的内部控件取值问题
- ASP.NET 2.0 的数据绑定控件概述与区别(GridView、DetailsView、FormView 、Repeater、DataList)
- asp.net关于WEB端用户重复提交问题。禁用服务器控件按钮问题。
- 关于asp.net页面同时使用ajax控件和Freetextbox控件的问题!
- 关于ASP.NET控件DropDownList控件的问题
- 关于ASP.NET 无法连接MySql数据库的问题和解决方法
- Asp.net中Detailview的控件问题
- ASP.NET 数据控件:GridView,DataList,Repeater ,DetailsView,FormView。
- ASP.NET中TextBox使用Ajax控件显示日期不全的问题解决方法
- ASP.NET中关于验证控件和自定义弹出确认窗口的冲突问题
- asp.net文件上传用到html的file控件,在使用母版页Master,更改form的Enctype=multipart/form-data的方法
- ASP.NET 2.0 的数据绑定控件概述与区别(GridView、DetailsView、FormView 、Repeater、DataList)
- 关于asp.net中ajax的问题:AjaxControlToolkit 未定义的解决方法