Как я могу обновить UpdatePanel в элементе управления со страницы?

StackOverflow https://stackoverflow.com/questions/1190220

Вопрос

У меня есть модал на странице, который также содержит пользовательский элемент управления.

При нажатии кнопки "ОК" в модальном режиме я хотел бы обновить панель обновлений, которая содержится в пользовательском элементе управления на странице.

В настоящее время кнопка "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, вы можете подключить свое приложение для выполнения довольно интересных задач.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top