Отправлять обратно из ModalPopup, но держать его видимым? - PullRequest
1 голос
/ 23 июня 2009

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

Можно ли выполнить обратную передачу на сервер и обновить сетку, оставив модальный режим открытым?

Когда вы отправляете поля и происходит обратная передача, модальное закрытие кто-нибудь делал это раньше? Кто-то упомянул решение с использованием jQuery, но это было давно.

Ответы [ 5 ]

3 голосов
/ 23 января 2013

Обертывание содержимого всплывающего окна (т.е. не самого всплывающего окна!) В панели обновления работает для меня.

Мой всплывающий контент - это панель поиска с сортируемой / доступной для просмотра сеткой результатов. UpdatePanel дал мне точное поведение, которое мне требуется, без дополнительного кода.

Спасибо Патель Шайлеш за идею.

<asp:Panel runat="server" ID="PopupPanel" Height="650" Width="900" Style="display: none">
    <asp:UpdatePanel runat="server" ID="UpdatePanel1">
        <ContentTemplate>
            <!-- popup content -->
        </ContentTemplate>
    </asp:UpdatePanel>
</asp:Panel>

<ajax:ModalPopupExtender runat="server" ID="PopupExtender" PopupControlID="PopupPanel"  
    TargetControlID="PopupButton" />
<asp:Button runat="server" ID="PopupButton" Text="Popup" />
1 голос
/ 24 июня 2009

Ключом для этого будет использование AJAX некоторого вида - Microsoft.Ajax или jQuery Ajax. Если UpdatePanel не работает, я бы предложил использовать jQuery для отправки обратно на сервер с помощью AJAX. Это может включать создание WebMethod для приема сообщения AJAX на стороне сервера и инструментирование на стороне клиента jQuery для отправки запроса / получения ответа. Не видя ваш HTML, немного сложно быть очень конкретным.

Основная идея:

 $(function() {
    $('#modalSubmitButton').click( function() {
       $.ajax({
           url: 'path-to-your-web-method',
           dataType: 'json',  // or html, xml, ...
           data: function() {
               var values = {};
               values['field1'] = $('#field1ID').val();
               ...
               values['field4'] = $('#field4ID').val();
               return values;
           },
           success: function(data,status) {
              ... update page based on returned information...
           }
           ... error handling, etc. ...
       });
       return false; // stop any default action from the button clicked
    });
 });
0 голосов
/ 18 декабря 2013

Я экспериментировал с modalpopupextender и нашел уродливое решение. Если на модальной панели есть кнопка, позволяющая осуществить обратную передачу

<asp:Panel runat="server" ID="PopupPanel" Height="650" Width="900" Style="display: none">
    <asp:Button ID="OkButton" runat="server" Text="OK" OnClick="OkBtn_Click"  />
</asp:Panel>

Если OkBtn_Click в выделенном коде имеет вызов:

System.Web.HttpContext.Current.Response.Write("<script></script>");

Тогда modalpopupextender не закрывается. Это случилось и с этим парнем: http://forums.asp.net/t/1591860.aspx

0 голосов
/ 24 июня 2009

Вид некрасивого варианта - принудительно выполнять обратную передачу, когда сначала отображается модальное всплывающее окно и устанавливается ViewState ["ModelPopupOn"] = true; а затем проверьте это при загрузке страницы и, наконец, выполните обратную передачу еще раз и установите для него значение false / удалите его из состояния просмотра при закрытии всплывающего окна.

(именно из-за этого я ненавижу инструментарий ajax)

0 голосов
/ 23 июня 2009

Я не уверен, что это сработает, но попробуйте поместить что-нибудь внутри modalpopup в UpdatePanel

Пожалуйста, если это работает, не ненавидите меня после вашего выпуска, я тоже ненавижу панели обновления

...