强制更新面板进行刷新

时间:2014-08-28 17:17:53

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

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

新的母版页是从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 - &gt; MultiView - &gt;查看 - &gt; GridView - &gt;按钮

<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();
...

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

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

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

你可以使用javascript来执行updatepanel完全回发 像是

_doPostBack('&lt;%= UpdatePanel1.ClientID%&gt;','');

_doPostBack('&lt;%= upPortfolio.ClientID%&gt;','');

答案 1 :(得分:0)