解决方案 »
- 如何在VS2008下编写framework 2.0 + ajax的程序?
- table绑定xml问题
- 当我们一次读取10条新闻记录时,怎么在最新的几条新闻后面加上“new"图片
- help? about sql store procedure
- CheckBoxList气死我了!!!为什么没有value属性!!!
- 关于jQuery Ajax
- frameset 框架判断登陆状态问题求教
- 用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败。请问这个问题如何解决?
- datagrid中的updata中的取值为什么取不到?
- 如何把ASPnetMenu放在自己的类中?
- ASP.NET制作验证码
- repeater 控件中的checkboxlist 不显示
你给当前 Page 对象的 mytable 属性赋值,假设 mytable 定义在页面(code behind隐藏代码)中的代码是protected Table mytable;
那么运行时,这个属性引用了当前 Page 的控件树上某个控件。现在你把这个属性变量另外赋值了(让此属性变量引用另外一个对象),你改变了当前 Page 的控件树了吗?没有。这当然不会对 Page 的 Render 产生任何影响。因为页面的 Render 过程是递归遍历自己的内部控件树来产生 html 的,而不是遍历自己声明的属性的。要让 Page 上的控件树改变,你必须把你的控件插入控件容器中。不过回到你的更大的问题上,在 Session 集合中是不可能保存控件并且再插入新的控件树的。就算是 Session 集合不会(经常)丢失,我们可以不考虑“Session丢失”问题,一个控件一旦插入一个控件树,下次再插入新的控件树时就会崩溃。控件不允许两次插入控件树!而且就算是把控件放入 Session 集合可以保持、也可以多次插入控件树,但是在 Session 集合中的东西不能参与 asp.net 页面生命周期的计算,不能自动化地响应客户端的 PostData、DataChangedEvent、PostbackEvent等行为,也丧失了asp.net基本功能。总之,把控件放入 Session 集合,是一个错误的。你还不如学习一下如何对 ascx 进行“局部缓存”,使用 OutputCache 让页面上的局部可以保持“缓存”而不真正去重建。这走的是另外一个真正合理的机制,而不是你这种“插入控件”机制。