编写组件,使用JavaScript更新UpdatePanel
2010-09-14 13:31:00 来源:WEB开发网众所周知,UpdatePanel是通过Trigger来更新的。被设定为Trigger的控件在PostBack之后会被客户端所截获,并且使用XMLHttpRequest对象发送内容,然后服务器端由ScriptManager配合,改变Page对象的输出,最后得到部分刷新的效果。但是有时候我们可能需要使用JavaScript来刷新UpdatePanel,这时候就不太方便了。
当然,我们又一个属于Workaround的方法,那就是使用JavaScript来模拟按钮的点击。我们往往会将一个按钮设为某个UpdatePanel的Trigger,然后在客户端模拟它的点击(我后面会提到,其实这是一个比较糟糕的做法,没有必要),使UpdatePanel进行更新。但是这样的做法实在太麻烦了些,也相当的不优雅。
现在我们就来编写一个组件解决这个问题。这个组件的名字叫做JavaScriptUpdater,似乎取得不怎么样——我一直不擅长取名。
首先来定一个需求吧
我们的目的,其实就是为了在客户端生成一个JavaScript代理,提供一个方法,调用它之后能够刷新页面。如果一个UpdatePanel的UpdateMode为Always,那么它一定会更新。如果需要更新UpdateMode为Conditional的UpdatePanel,就需要通过在页面中编写tag来设定哪些UpdatePanel也会被更新。我们需要尽可能的把编程工作变得最小。
不如我们先考虑使用方式,我们编写的这个JavaScriptUpdater在页面中可以这样使用:
JavaScriptUpdater使用方式
<helper:JavaScriptUpdater runat="server" ID="Updater" MethodName="Refresh"
ResolveUpdatePanel="OnResolveUpdatePanel" Enabled="True">
<UpdatePanels>
<helper:UpdatePanel UpdatePanelID="UpdatePanel1" />
...
</UpdatePanels>
</helper:JavaScriptUpdater>
更多精彩
赞助商链接