铵钮提交事件PostBack之后,一些动态加载的物件丢失
今早起来,发现skype有网友留言,情况大约如下,不过Insus.NET还是先感谢网友的测试。
http://www.cnblogs.com/insus/p/3193619.html 如果你有看此篇博文。而且照做之后,在运行时,会有点不正常显示。如:
"大神,你在演示能正确运行吗?为何我测试时,会出现这个样子,由于每一步都照着做的。"
OH, Insus.NET在做演示时,确出有出现这个异常,不过没有看得它是很严重,因为平时见多了,只是稍微调整一下,就可以了。当时一出现这个异常时,只是去了用户控件的Page_Load事件的,把一个IsPostBack判断拿掉
拿掉了,程序可以运行了!!!
由于PostBack的原因,一个物件在PostBack之后,不再保存。如果我们一定要Page_Load事件,添加那个判断。而且在网页Page_Load或用户控件的Page_Load事件,都添加IsPostback判断,那怎么办?
好的,我们先去改一下程序,把网页和用户控件,均加上IsPostBack的判断。
添加判断之后,程序运行起来,在PostBack之后,动态添加部分肯定会消失。要怎样解决呢?看看Insus.NET怎样着手。
在Repeater控件中,添加一个OnItemCreated事件:
去.aspx.cs代码页写上面事件处理逻辑,把OnItemDataBound事件内的代码拷贝至OnItemCreated事件中,稍作一些修改。
上图的OnItemCreated事件中,只是做了动态加载用户控件。拿掉了为用户控件赋值的代码。而OnItemDataBound事件呢?看看下图:
刚好相反,这个事件中,拿掉动态加载用户控件的代码,改写为赋值的功能。
为什么需要这样写,它就能正常运行?
因为OnItemCteated事件,每在PostBack之后,它都会运行,而OnItemDataBound事件,它只会运行一次。