强制更新面板刷新

本文关键字:刷新 更新 | 更新日期: 2023-09-27 18:19:44

我正在将一个sharepoint 2007网站迁移到2013,我们已经完成了所有步骤,并正在通过构建2013母版页来替换旧的母版页,但我们在其中一个Web部件中使用的更新面板出现了问题。

新的母版页是根据Sharepoint生成的minimum.master创建的,Sharepoint已经附带了ScriptManager。我刚刚添加了所需的AsyncPostBackTimeout="1000" EnableHistory="true",如下所示:

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

然后,在Web部件使用的用户控件中,有一个更新面板,该面板有一个MultiView控件,该控件内部也有一些其他控件。进行回发的按钮位于栅格视图内部,而栅格视图又位于多视图内部。

更新面板->多视图->视图->网格视图->按钮

<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>
...

当我按下详细信息时,它应该会切换视图。它在服务器端做得很好,如果我删除更新面板,它就可以工作了。

它使用在运行时创建的ScriptManager处理Sharepoint 2007,但它有一个使用的保护措施

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

所以问题不存在(我已经检查了它的调试)。

更新面板现在似乎没有刷新。我看不到任何错误服务器或客户端。。。

我还试图在点击事件结束时强制更新面板,但没有成功,比如:

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

有什么想法吗?

强制更新面板刷新

您可以使用javascript执行updatepanel完全回发吗像

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

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

是否尝试为更新面板添加?

https://www.asp.net/web-forms/overview/older-versions-getting-started/aspnet-ajax/understanding-asp-net-ajax-updatepanel-triggers