Принудительно обновить панель обновления

1

Я переношу сайт sharepoint 2007 на 2013 год, мы выполнили все шаги и завершаем его, создав основные страницы 2013, чтобы заменить старые, но у нас возникла проблема с областью обновления, используемой в одном из веб-сайтов.

Новая главная страница была создана из файла 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" />

Затем в пользовательском элементе управления, который использует веб-страница, есть панель обновления, которая имеет элемент управления MultiView, который также имеет некоторые другие элементы управления. Кнопки, которые делают обратную передачу, находятся внутри сетки, которая, в свою очередь, находится внутри 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();
...

Таким образом, проблема не существует (я проверил ее отладку).

Кажется, теперь панель обновления не обновляется. Я не вижу никакого сервера ошибок или клиентской стороны...

Я также попытался принудительно обновить обновленную панель в конце события click, безрезультатно:

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

Есть идеи?

  • 0
    возможный дубликат обновления панели обновления ASP.NET
  • 1
    Да, я видел это, но, как я уже сказал. Я пытался заставить с Update (), но не работал. Так что должен быть другой путь или что-то упущено с моей стороны.
Показать ещё 2 комментария
Теги:
sharepoint
sharepoint-2013
updatepanel

2 ответа

0

вы можете использовать javascript для выполнения полной обратной передачи updatepanel, например, как

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

т.е.

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

0

Вы пытались добавить панель обновления?

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню