积极答复者
postback问题

问题
答案
-
你好,
textbox实现了IPostbackDataHandler,它在loadpostbackdata方法中可以重新获取到前端传过来的value,这是禁用ViewState仍能保持原值的原因。
dropdownlist也实现了这个接口,但是创建dropdownlist的控件层次需要用到数据源。而对于dropdownlist的数据来源有两个:viewstate和手动指定datasource。
如果viewstate被禁止,那只能是手动设置datasource。
手动设置有两种方式:一个是设置datasourceid,还有一个是如你所说的设置datatable等类似的东西。
如果是设置datasourceid还是可以保存状态的,因为他实现了IPostbackDataHandler,理由和textbox一样。
如你那样,在oninit中设置也是可以的。因为oninit方法在loadpostbackdata之前,但是在这个方法之后设置数据源则需要自己手动绑定。
因为如果是在loadpostbackdata之后设置,此时又没有其它数据源,当dropdownlist在loadpostbackdata阶段设置选择值的时候,该dropdownlist没有任何item,也就是说没有创建控件层次,所以不可能有被选中项。
Microsoft Online Community Support- 已标记为答案 ogra 2010年4月27日 5:36
全部回复
-
请看 ASP.NET 页生命周期 http://msdn.microsoft.com/zh-cn/library/ms178472(VS.80).aspx
-
你好,
textbox实现了IPostbackDataHandler,它在loadpostbackdata方法中可以重新获取到前端传过来的value,这是禁用ViewState仍能保持原值的原因。
dropdownlist也实现了这个接口,但是创建dropdownlist的控件层次需要用到数据源。而对于dropdownlist的数据来源有两个:viewstate和手动指定datasource。
如果viewstate被禁止,那只能是手动设置datasource。
手动设置有两种方式:一个是设置datasourceid,还有一个是如你所说的设置datatable等类似的东西。
如果是设置datasourceid还是可以保存状态的,因为他实现了IPostbackDataHandler,理由和textbox一样。
如你那样,在oninit中设置也是可以的。因为oninit方法在loadpostbackdata之前,但是在这个方法之后设置数据源则需要自己手动绑定。
因为如果是在loadpostbackdata之后设置,此时又没有其它数据源,当dropdownlist在loadpostbackdata阶段设置选择值的时候,该dropdownlist没有任何item,也就是说没有创建控件层次,所以不可能有被选中项。
Microsoft Online Community Support- 已标记为答案 ogra 2010年4月27日 5:36