今天,使用sqldatasource控件绑定数据更新时遇到了一些问题:
抽象描述一下,往页面中拖一个FormView,同时添加一个SqlDataSource控件。通过向导配置好数据源控件(选中‘生成insert,delete,update’),然后将FormView与之绑定。这时FormView自动生成好了模版。
此时,所有操作正常。往Edit模版中添加一个第三方控件(我添加的是infragistics的UltraWebListbar控件并加入了一个Group),然后将某个之前自动生成的TextBox,假设id为‘tb1’(绑定表达式已配制好了)拖到里面。运行。update后,tb1里的数据被更新成null,也就是说,更新前数据源控件没有取到tb1里的值。
将UltraWebListbar控件换为一个Panel,一切正常。看来是第三方控件的原因,但是要我改,目前我只能想到在SqlDataSource控件的Updating事件里或FormView的ItemUpdating事件里,手动赋参数值。(而且此时到底是否可以取到参数值我没有试)
主要不好debug的原因是,数据源控件封装了太多东西。我不清楚其发生的动作是在页面生存周期的哪些阶段。因为肯定第三方控件的一些事件,例如从viewstate中取回数据等,在生存周期中所运行的时期和数据源控件发生了冲突,次序需要调整。
=================暂时先用其他办法绕过问题,以后有时间再深入下去================