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

关于服务端事件回发与UpdatePanel的问题(疑惑)
最近遇到一个问题,不知道是什么原因造成的,请高人指导.

我用VS2005(C#)做了一个简单的系统,用了ajax1.0正式版,用了masterPage,头部底部用了相同的用户控件.
使用masterPage页面是一个查询页面,上面放了一些查询用的文本\下拉等控件,下面放了一个dataGrid用来显示查询的数据.
查询控件中有一个简单的服务器端回发事件(比如,连动下拉框),并且在此页面里用UpdatePanel包起来,以实现无刷新.

但问题是:

如果dataGrid里有500条数据的时候,那个服务器触发事件就回很慢才能实现联动,如果dataGrid里没有数据的话那个联动就很快....

不是用了UpdatePanel是局部刷新吗,跟dataGrid里的数据有关系吗?我断点追踪了一下,服务器端回发并没有涉及到dataGrid中的事件,为什么会这样啊....

我又发现有500条dataGrid数据生成的HTML非常大,,难道跟这个有关系吗,难道虽然局部刷新,也会把整个HTML从头到尾走一遍吗??

实在是困惑,希望高人们指点,并指导一下怎么优化代码,谢谢!


------解决方案--------------------
局部刷新的局部应该是整个ContentTemplate中的内容吧

------解决方案--------------------
F10单步一下,看看具体在那个地方慢,也有可能是后台处理的某个语句效率太低。。。
------解决方案--------------------
应该是你 dataGrid 绑定数据并分页的效率太低。你首先应该去掉 UpdatePanel 效果(设置它的参数),让这个页面正常回发刷新。等把页面速度提高了,再起用局部刷新。

其实整个页面的处理照常执行,只是最后输出 html 的时候将不刷新的部分的 html 删除了,仅保留需要刷新的那些 UpdatePanel 的 Html。

由此可见,说 UpdatePanel 加快页面执行,这对你这类页面,是过于想当然的,是过于随便的说法。你要让整页回发变得很快,然后 UpdatePanel 才能变快。