2014-08-28 177 views
1

我正在将Sharepoint 2007网站迁移到2013年,我们完成了所有步骤,并正在使用2013版母版页来替代旧版页面,但我们遇到了使用更新面板的问题在其中一个webparts中。强制更新面板刷新

新的母版页是从Sharepoint生成的minimum.master中创建的,它已与ScriptManager一起提供。在该web部件使用存在具有其具有也里面的一些其他控件的MultiView控件的更新面板的用户控制

<asp:ScriptManager ID="ScriptManager" runat="server" AsyncPostBackTimeout="1000" EnableHistory="true" EnablePageMethods="false" EnablePartialRendering="true" EnableScriptGlobalization="false" EnableScriptLocalization="true" /> 

然后:我刚添加的所需AsyncPostBackTimeout="1000" EnableHistory="true",像这样。进行回发的按钮位于GridView中,而该GridView又位于MultiView内部。

的UpdatePanel - >多视图 - >查看 - > GridView控件 - >按钮

<asp:UpdatePanel runat="server" ID="updatepanel1" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <asp:MultiView ID="MultiView" runat="server"> 
      <asp:View ID="ViewAll" runat="server"> 
       <div class="firstColumn"> 
        <asp:Panel ID="pnlP" runat="server"> 
         <asp:GridView ID="gvP" runat="server" AutoGenerateColumns="False" 
          PageSize="10" Width="100%" GridLines="None" CssClass="defaultTable" CellPadding="0" 
          CellSpacing="1" OnDataBound="gvP_OnDataBound"> 
          <AlternatingRowStyle CssClass="odd" /> 
          <RowStyle CssClass="even" /> 
          <Columns> 

           <asp:BoundField DataField="PNumber" HeaderStyle-Width="10%" /> 
           <asp:TemplateField> 
            <HeaderStyle Width="20%"></HeaderStyle> 
            <ItemTemplate> 
             <%# Server.HtmlDecode(Eval("IObject").ToString())%> 
            </ItemTemplate> 
           </asp:TemplateField> 
           <asp:TemplateField> 
            <HeaderStyle Width="10%"></HeaderStyle> 
            <ItemTemplate> 
             <asp:ImageButton ID="btnPDetails" runat="server" ImageUrl="/SiteCollectionImages/generic/generic.png" 
              OnClick="btnDetails_Click" CommandName="PDetails" /> 
            </ItemTemplate> 
           </asp:TemplateField> 
... 

应该切换视图,当我按下细节。它在服务器端完成一切,如果我删除更新面板,它就可以工作。

这是工作于2007年的SharePoint与一个ScriptManager在运行时创建的,但它使用的保障:

if (ScriptManager.GetCurrent(webpart.Page) == null) 
      { 
       ScriptManager scriptManager = new ScriptManager(); 
... 

所以这个问题是不存在的(我已经检查了调试运行)。

看起来更新面板现在不刷新。我看不到任何错误的服务器或客户端...

我还试图迫使在UpdatePanel对click事件的结束时更新,但无济于事,就像这样:

protected void btnDetails_Click(object sender, ImageClickEventArgs e) 
{ 
       NavigateFromGridView(sender); 
       updatepanel1.Update(); 
} 

任何想法?

+0

可能重复(http://stackoverflow.com/questions/260699/asp-net-refresh-update-panel) – Greg 2014-08-28 17:20:02

+1

是的,我看到了一个,但就像我说的。我试图强制更新(),但没有奏效。 所以应该有另一种方式,或者在我的最后缺少一些东西。 – 2014-08-28 17:24:40

+0

任何javascript错误?当你尝试进行更新? – Aristos 2014-08-28 19:48:54

回答

0

可以使用JavaScript来等作为

_doPostBack( '<%= UpdatePanel1.ClientID%>', '')执行的UpdatePanel完全回发 ;

_doPostBack( '<%= upPortfolio.ClientID%>', '');