webParts与UpdatePanel都是ms的产品,直接将webparts放在updatePanel里,原以为就可以搞定webparts无刷新拖动了,试验了一下:令人大跌眼镜,居然没反应,看来ms各产品之间的兼容性还有待改进
到网上搜索了一下,发现一个第三方的ajax工具:majicajax可以搞定这一问题。
这里转贴一个网友对此问题的文章:
Web.config的配置如下:
<?xmlversion="1.0"?> <configuration> <configSections> <sectionname="magicAjax"type="MagicAjax.Configuration.MagicAjaxSectionHandler, MagicAjax"/> </configSections> <magicAjaxtracing="false"> <pageStore/> </magicAjax> <system.web> <authenticationmode="Forms"/> <pages> <controls> <addnamespace="MagicAjax.UI.Controls"assembly="MagicAjax"tagPrefix="ajax"/> </controls> </pages> <webParts> <personalizationdefaultProvider="Nsquared2SqlPersonalizationProvider"> <authorization> <allowusers="*"verbs="enterSharedScope"/> </authorization> <providers> <addname="Nsquared2SqlPersonalizationProvider"type="Nsquared2.Web.UI.WebControls.WebParts.SqlPersonalizationProvider, Nsquared2.Web"connectionStringName="PortalConnectionString"varyByParams="ParentDPID,DPID,UserId"></add> </providers> </personalization> </webParts> <httpModules> <addname="MagicAjaxModule"type="MagicAjax.MagicAjaxModule, MagicAjax"/> </httpModules> <compilationdebug="true"> <assemblies> <addassembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/></assemblies></compilation> </system.web> </configuration>
使用WebPart的页面如下:
<asp:WebPartManager ID="WebPartManager1" runat="server"> </asp:WebPartManager> <ajax:AjaxPanel ID="AjaxPanel1" runat="server" Height="305px" Width="452px"> <wmz:WebPartDisplayModesMenu ID="WebPartDisplayModesMenu1" runat="server" /> <table > <tr> <td> <asp:WebPartZone ID="WebPartZone1" runat="server"> <ZoneTemplate> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> </ZoneTemplate> </asp:WebPartZone> </td> <td > <asp:WebPartZone ID="WebPartZone2" runat="server"> <ZoneTemplate> <asp:Calendar ID="Calendar1" runat="server"></asp:Calendar> </ZoneTemplate> </asp:WebPartZone> </td> </tr> </table> </ajax:AjaxPanel>
把两个WebPartZone放在 MagicAjax's AjaxPanel.控件中,可以支持所有的WebPart的所有操作无刷新,类似于Google的Loading……效果。