【问题标题】:Force update panel to refresh强制更新面板刷新
【发布时间】:2014-10-22 15:37:05
【问题描述】:

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

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

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

然后在 webpart 使用的用户控件中有一个更新面板,其中有一个 MultiView 控件,其中还有一些其他控件。进行回发的按钮位于 gridview 内部,而 gridview 又位于 MultiView 内部。

UpdatePanel -> MultiView -> 视图 -> 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>
...

当我按下细节时它应该切换视图。它在服务器端做所有事情,如果我删除更新面板,它就可以工作。

它在 Sharepoint 2007 上工作,并在运行时创建了一个 ScriptManager,但它有一个保护措施:

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

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

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

我还尝试在点击事件结束时强制更新面板更新,但无济于事,如下所示:

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

有什么想法吗?

【问题讨论】:

  • 是的,我看到了那个,但就像我说的那样。我试图强制使用 Update(),但没有奏效。所以应该有另一种方法,否则我的结果就缺少了一些东西。
  • 任何 javascript 错误?当您尝试进行更新时?
  • 无。就像我说的,找不到任何错误客户端或服务器端...

标签: c# asp.net sharepoint updatepanel sharepoint-2013


【解决方案1】:

你可以使用 javascript 来执行 updatepanel 完整的回发吗 像

_doPostBack('', '');

即

_doPostBack('', '');

【讨论】:

    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 2015-06-14
    • 2022-01-09
    • 2014-03-09
    • 1970-01-01
    • 2014-09-15
    相关资源
    最近更新 更多