updatepanel小结

 上周知道的updatepanel,于是这个星期一直在使用和研究,下面是一个小小总结:

1)简单原理

上网找了找,觉得下面的解释比较好理解:当ScriptManager中允许页面局部更新时,它会以异步的方式回传给服务器,与传统的整页回传方式不同的是只有包含在UpdatePanel中的页面部分会被更新,在从服务端返回HTML之后,PageRequestManager会通过操作DOM对象来替换需要更新的代码片段。

2)按钮组件,或者提交代码组件在updatepanle里面:

   不会更新页面,但是会提交结果,更新updatepanel中的内容。这里说明下,貌似页面所有的updatapanel都会更新。

   1,如果更新内容在updatepanel内:刷新内容。

   2,如果提交组件在updatepanel外:由于组件在updatepanel外,所以客户端页面不刷新内容;但是在服务器端已经执行了代码,所以更新组件在服务器端已经更新了内容。但是客户端却无法获取更新。

3)客户端更改了页面的内容: 不管是否在updatepanel,如果是label,更改了内容后,在服务器端没有变化。如果是textbox,在服务器端同时更新text。所以服务器端和客户端交互数据的时候,我觉得也可以用隐藏的textbox来进行。

4)如果有dropdownlist在这个updatepanel里面的话,如果是动态初始值的,那么提交数据后,无论如何也得不到真实的下拉选项,都只能得到默认的值。所以有下拉选框的时候,拿出来,不要放在updatepanel里面,动态赋值,同时不回传,这样才能在服务器端取到真实的值。同时,如果这个下拉框有数据源,在页面属性中配置其数据源,则即使放在updatepanel中,这个下拉框的真实选项仍然能被服务器识别。(真绕)

5)疑问:

     如果提交组件在updatepanel内,页面局部更新。对于cs文件中的全局变量,有点不解。

     在本次更新的时候,全局变量更改成功。但是下次别的组件(也在updatepanel中)取这个全局变量的时候,仍然是没有更新之前的。这样,就无法共同读取一个全局变量了。不知道怎么解决。

     只能用viewstate来存储数据,而且不能放在全局变量中初始化。只能在page_load事件中或者函数中赋值,否则和全局变量一样有问题。而且这个不能页面间传值,只能用隐藏域传值

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值