ViewState & UpdatePanle & ReadOnly属性

  又是 Viewstate 问题

  在使用压缩的方法对 ViewState  进行压缩处理后,回传的数据的确少了。但又有了新问题出现了:整页的回传没有问题,但是使用 UpdatePanle 异步回传时服务器端却不维护压缩后的 ViewState 了。这比较麻烦了,因为我的 UpdatePanle 其中一个触发器是UpdatePanle控件内的某个控件的 SelectedChange 属性。由于在异步回传中服务器端不维护压缩的 ViewState 这导致 SelectedChange 属性在客户端 Change 了(状态改变了),但对应的服务器端的没有Change(状态没有跟着改变)。而但我使用另一个控件触发 UpdatePanle 时,本来不需要触发 SelectedChange 事件的,这时却触发了(因为客户端 change 服务器端没有 change )。看来,用压缩 ViewState 的方法对异步回传是没用了,当然也许是我的压缩方法有问题,或者有某位高人已经解决了异步回传时也同时压缩 ViewState 的。

   在这里,只有放弃 UpdatePanle 异步回传的方法了。改用 自己手工写 Ajax ,在客户端显示更新 UpdatePanle 内容,显示处理 SelectedChange 事件。

  客户端显示更新  UpdatePanle 没有问题了,但当向服务器提交 更改后的 内容进行保存时,有出现问题了:可以保存部分控件更改过的内容,但部分控件却保存不了,还是保持原来的值而非更改的值。

  经过一段调试,发现是 控件属性 ReadOnly 惹的祸,当 控件设置 ReadOnly 后,在客户端用 JavaScript 是改变的内容虽然回传给了服务器,但服务器却不接收这个更改的值 ,只有服务器自己更改的才可以(包括异步回传令服务器更改的情况)。唉~唯有去掉这个属性,再在客户端 用 JavaScript 加上去了。

 

另:在网上查资料时找到这个

编写组件,使用JavaScript更新UpdatePanel

posted @ 2009-02-19 16:12  nikytwo  阅读(274)  评论(0编辑  收藏  举报