Как я могу обновить UpdatePanel в элементе управления со страницы?
-
19-09-2019 - |
Вопрос
У меня есть модал на странице, который также содержит пользовательский элемент управления.
При нажатии кнопки "ОК" в модальном режиме я хотел бы обновить панель обновлений, которая содержится в пользовательском элементе управления на странице.
В настоящее время кнопка "OK" на модальном сервере выполняет обратную передачу всей страницы, я бы хотел просто обновить панель, но я не уверен, как добавить ее в качестве триггера, поскольку ее нет в элементе управления UpdatePanel.
Спасибо.
У меня есть частичный ответ...Я могу обновить панель один раз, сделав это:
Dim addTrigger As New AsyncPostBackTrigger
addTrigger.ControlID = MyButton.ID
addTrigger.EventName = "Click"
MyUserControl.GetUpdatePanel.Triggers.Add(addTrigger)
Это вызовет частичную обратную отправку в первый раз, но после этого в первый раз это приведет к перезагрузке всей страницы.Есть какие-нибудь идеи?
Решение
Вы можете явно добавить кнопку OK в качестве AsyncPostBackTrigger для панели обновления.
В разметке aspx для панели обновления:
<asp:UpdatePanel ID="updPanel" runat="server">
<ContentTemplate>
....
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="the control" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
или в коде, стоящем за:
protected override void OnInit(EventArgs e)
{
AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
trigger.ControlID = "the Control";
trigger.EventName = "Click";
updPanel.Triggers.Add(trigger);
base.OnInit(e);
}
Другие советы
Возможно, я упускаю здесь какую-то тонкость, но не могли бы вы просто назвать Метод Update() на панели обновления?
Вы можете использовать следующий шаблон для управления обратной передачей панели в JavaScript:
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm._panelsToRefreshIDs = UPComments.uniqueID;
prm._doPostBack(eventTarget,eventArgument);
theForm.submit();
Разве вы не можете просто добавить AsyncPostBackTrigger программно из исходного кода?
Вот Так ?
просто поместите содержимое панели в панель обновления, чтобы у вас было:
Ваш пользовательский контроль здесь.
это также предотвратит исчезновение всплывающего окна до тех пор, пока вы этого не захотите.
Затем в вашем коде вы можете вызвать его с помощью popup.show(0 или pop.hide() и связать их с вашим пользовательским элементом управления, добавив к нему событие и обработав его в коде ваших страниц.таким образом, ваш пользовательский элемент управления может указывать всплывающему окну, что делать и когда.вы даже можете для этого обновить панель обновления hte, если вам это нужно по какой-то причине.
для случая, описанного выше, я только что понял, что вы хотите обновить панель в элементе управления.Создайте метод в элементе управления, который вызывает метод обновления на панели обновления, а затем запускает это событие с вашей страницы.Это тот же принцип, только в обратном порядке.Используя event well, вы можете подключить свое приложение для выполнения довольно интересных задач.