Как заставить полный постбэк с кнопки внутри UpdatePanel? - PullRequest
69 голосов
/ 30 марта 2010

Как заставить полный постбэк с кнопки внутри UpdatePanel?

Ответы [ 5 ]

84 голосов
/ 30 марта 2010

Вы можете использовать свойство Triggers UpdatePanel для регистрации действий, которые инициируют полную обратную передачу.

Добавьте объект PostBackTrigger к этому свойству, содержащий ControlID элемента управления, который должен инициировать полную обратную передачу.

<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
    <ContentTemplate>
        ...
    </ContentTemplate>
    <Triggers>
        <asp:PostBackTrigger ControlID="myFullPostBackControlID" />
    </Triggers>
</asp:UpdatePanel>
48 голосов
/ 19 октября 2012

Просто добавляю это, потому что никто другой не имеет. Это можно сделать в виде кода в одной строке кода без использования любого из вышеперечисленных методов. Просто поместите это в page_load:

Visual Basic

ScriptManager.GetCurrent(Me).RegisterPostBackControl(myButtonID)

C #

ScriptManager.GetCurrent(this).RegisterPostBackControl(myButtonID);
13 голосов
/ 30 марта 2010

С здесь :

Используйте элемент управления PostBackTrigger для включения элементов управления внутри UpdatePanel, чтобы вызвать обратную передачу вместо выполнения асинхронной обратной передачи.

 <Triggers>
    <asp:PostBackTrigger ControlID="controlID" />
 </Triggers>
0 голосов
/ 09 февраля 2018

Это старый вопрос, есть немного хитрый подход, когда все находится на панели обновления , и вы хотите сделать полный пост обратно, чтобы ваш код Document.Ready работал нажмите.

1. Создайте фиктивную кнопку вне панели обновлений и щелкните ее из кода, подобного этому

ScriptManager.RegisterStartupScript(Page, this.GetType(), "ResetDoc", "ResetDocumentReady();", true);

2. Определите функцию на внешнем интерфейсе следующим образом:

function ResetDocumentReady() {
        $("[id$=DummyButton]").click();
    }

ПРИМЕЧАНИЕ: Но лучший способ - использовать триггер, ответ @Thibault Falise :)

0 голосов
/ 27 октября 2015

У меня была такая же проблема с использованием ImageButton внутри WebDataGrid.

Вместо этого я поместил строку из EvilDr в preRender для веб-сетки данных. Работал отлично!

for (int i = 0; i < wdgMyData.Rows.Count; i++)
{
   ScriptManager.GetCurrent(this).RegisterPostBackControl((ImageButton)wdgMyData.Rows[i].Items[3].FindControl("btnDownloadExcel"));
}
...