日期:2014-05-20  浏览次数:20376 次

ajax中TreeView控件在新增节点时,在服务端设置新增的节点为选择状态,后状态丢失的问题?
ajax中TreeView控件在新增节点时,在服务端设置新增的节点为选择状态,后状态丢失的问题?

单击新增按钮,在树控件选择的节点上,增加子节点,并设置新增的节点为选中状态,此时如果有事件回发到服务端,则刚才选择的新增节点的选择状态会丢失,重新回到了新增节点的父节点变为选择状态。主要是updatepanel控件引起的,ajaxbeta2版本和正式版都有这个问题?期待高手解决。

------解决方案--------------------
我没有用过asp.net ajax,不过我看到近期有其它的用的比较多的Ajax框架的新版本已经可以更新ViewState了。asp.net ajax不是最终发行了可商用的版本了么,真的不能将处理updatepanel刷新的控件的状态么?那么真是程序员的悲哀,也是asp.net项目的悲哀。
------解决方案--------------------
我觉得你下载了ajax框架新版本之后应该测试一下viewstate是否能够维持的问题。在页面上updatepanel中提交后台一个字符串并且保存在页面viewstate中,再在另一个updatepanel中点按钮可以读取viewstate显示出内容,看看手头的ajax是不是可以用。asp.net页面有成百上千、或者页面复杂一些有成千上万的viewstate项目。如果没有状态管理,那么编程就仅限于静态页面或者仅有少数几个状态(过去的静态页面用url参数保存少数几个状态)所能达到的水平。

软件可操作性是什么,就是一些目标、现实、可能、可行、应该等不同角度的状态转移过程。没有状态管理,软件充其量只是一些图片和文字的低层次对其,而不是服务。
------解决方案--------------------
路过,纯属路过,听说asp.net ajax 正式版1.0发布了么,是不是?
------解决方案--------------------
Page_load有没有处理什么TreeView状态的事件?
加一个if( !IsPostBack) .....

------解决方案--------------------
帖子沉底了,顶一下
------解决方案--------------------
控件的状态是保存在viewstate中的.
而viewsate的值是保存在当前页面的hidden中的.

用ajax更改了服务器控件的属性,但是在当前 <form中的viewsate 并没有变化.所以只要提交就会状态丢失.

目前没有好的解决办法.

如果一定要实现.
可以这样(很麻烦)

用xmlhttp将当前form中的所有元素值提交到后台.然后在后台做个服务器操作,得到返回的html
然后根据这些html中的值得到viewstate中的值.将它更新到 <form中去,
但这样做太不值...

------解决方案--------------------
cpp2017(慕白兄) ,你仔细了解过ASP.NET AJAX再说啦,它由ASP.NET Team的人负责制作,如果连这么简单的ASP.NET兼容性支持都做不到,这些人就不用在MS干活了。

ASP.NET AJAX是能够正确存取ViewState的,我使用过程中没遇到过ViewState的问题, sp1234(修改成功!请关闭本页。) 也证实了基本的ViewState操作能正常。那可能是什么问题呢?首先麻烦楼主做一下最小现场的案件重演:

你直接新建一个Page,放入一个UpdatePanel,再放一个TreeView,加入两个节点Node1和Node1.1,然后编写代码让Node1.1被点击是创建Node1.1.1而且选中它,接着看看这个页面是否正常。

如果正常,这说明你原本的页面上有其他东西引发了此问题。如果不正常,说明了TreeView和UpdatePanel直接有冲突,绕后我们再想办法绕过去。