Domanda

Ho un ModalPopup che conterrà una griglia e 4 campi per inserire elementi nella griglia stessa.

È possibile postbackare sul server e aggiornare il gridview mantenendo aperto il modale?

Quando si inviano i campi e si verifica il postback, le chiusure modali lo hanno già fatto prima? Qualcuno ha menzionato una soluzione usando jQuery, ma questo era molto tempo fa.

È stato utile?

Soluzione

La chiave per farlo sarà usare AJAX di qualche tipo: Microsoft.Ajax o jQuery Ajax. Se UpdatePanel non funziona, suggerirei di utilizzare jQuery per inviare nuovamente al server utilizzando AJAX. Ciò implicherebbe la creazione di un WebMethod per accettare il post AJAX sul lato server e la strumentazione del lato client con jQuery per inviare la richiesta / ricevere la risposta. Senza vedere il tuo HTML è un po 'difficile essere molto specifici.

Idea di base:

 $(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
    });
 });

Altri suggerimenti

Avvolgere il contenuto del popup (cioè non il popup stesso!) in un UpdatePanel ha funzionato per me.

I miei contenuti popup sono un pannello di ricerca con griglia di risultati ordinabile / paginabile. UpdatePanel mi ha dato il comportamento esatto che richiedo senza codice aggiuntivo.

Grazie a Patel Shailesh per l'idea.

<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" />

Non sono sicuro che funzioni, ma prova a inserire qualsiasi cosa nel modalpopup in un UpdatePanel

Per favore, se questo non mi odia dopo il tuo rilascio, odio anche i pannelli di aggiornamento

Una specie di brutta opzione è quella di forzare un postback quando si mostra il popup modale in primo luogo e si imposta un ViewState [" ModelPopupOn "] = true; e quindi controlla che sulla pagina venga caricato e infine postback di nuovo e impostalo su false / rimuovilo da viewstate quando chiudi il popup.

(questo tipo di problemi sono il motivo per cui odio il toolkit Ajax)

Stavo sperimentando il modalpopupextender e ho trovato una brutta soluzione. Se il pannello modale ha un pulsante che rende possibile il postback

<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>

Se OkBtn_Click nel code-behind ha una chiamata a:

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

Quindi il modalpopupextender non è chiuso. Questo è successo anche a questo ragazzo: http://forums.asp.net/t/1591860.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top