Как заставить полный постбэк с кнопки внутри UpdatePanel?
Как заставить полный постбэк с кнопки внутри UpdatePanel?
5 ответов
Вы можете использовать свойство Triggers UpdatePanel для регистрации действий, которые запускают полную обратную передачу.
Добавьте к этому свойству объект PostBackTrigger, содержащий ControlID элемента управления, который должен инициировать полную обратную передачу.
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
...
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="myFullPostBackControlID" />
</Triggers>
</asp:UpdatePanel>
Просто добавлю это, потому что никто другой не имеет. Это можно сделать в виде кода в одной строке кода без использования любого из вышеперечисленных методов. Просто поместите это в page_load:
Visual Basic
ScriptManager.GetCurrent(Me).RegisterPostBackControl(myButtonID)
C#
ScriptManager.GetCurrent(this).RegisterPostBackControl(myButtonID);
Используйте элемент управления PostBackTrigger, чтобы включить элементы управления внутри UpdatePanel, чтобы вызвать обратную передачу вместо выполнения асинхронной обратной передачи.
<Triggers>
<asp:PostBackTrigger ControlID="controlID" />
</Triggers>
У меня была та же проблема с использованием ImageButton внутри WebDataGrid.
Вместо этого я поместил Line из EvilDr в preRender для webdatagrid. Работал отлично!
for (int i = 0; i < wdgMyData.Rows.Count; i++)
{
ScriptManager.GetCurrent(this).RegisterPostBackControl((ImageButton)wdgMyData.Rows[i].Items[3].FindControl("btnDownloadExcel"));
}
Это старый вопрос, здесь тоже немного хитрый подход, когда все находится на панелях обновления, и вы хотите сделать полный пост обратно, чтобы ваш код Document.Ready работал при нажатии.
1. Создайте фиктивную кнопку за пределами панели обновлений и щелкните ее по коду, как это
ScriptManager.RegisterStartupScript(Page, this.GetType(), "ResetDoc", "ResetDocumentReady();", true);
2. Определите функцию на переднем конце, как это
function ResetDocumentReady() {
$("[id$=DummyButton]").click();
}
ПРИМЕЧАНИЕ. Но лучше всего использовать триггер, ответ которого выложил @Thibault Falise :)