2010-08-27 11 views
5

Come posso utilizzare la conferma modale Jquery con jqGrid? Dire quando mi sottoporrò le mie voci si aprirà una finestra di dialogo modale e visualizzare i nomi con il messaggio per l'invio al server ..jQuery dialog modal e jqGrid

Il mio approccio

$("#dialog-confirm").dialog({ 
      autoOpen:false, 
      resizable:false, 
      height:180, 
      modal:true, 
      buttons:{ 
       'Confirm': function(){ 
          var ids =jQuery("#list10").jqGrid('getGridParam','selarrrow'); 
           $.ajax({ 
            type: "POST", 
            url: "url&names="+ids, 
            data: JSON.stringify(ids), 
            dataType: "json" 
          }); 
           }, 
          'cancel': function(){ 
            $(this).dialog('close'); 
            } 
     } 
     }); 
     }); 

mio html:

<div id="dialog-confirm" title="Confirm"> 
     <p><span class="ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span>Are you sure want to cancel(or send this names)#names?</p> 
    </div> 

In quella finestra di dialogo ho bisogno di inviare anche quei nomi ... ma questo approccio non mi darà i nomi dalla mia griglia che ho selezionato per inviarlo al server.

risposta

13

Il codice seguente potrebbe fare ciò che è necessario

$("#wics").click(function(){ 
    var grid = jQuery("#list10"); 
    var ids = grid.jqGrid('getGridParam','selarrrow'); 
    if (ids.length>0) { 
     var names = []; 
     for (var i=0, il=ids.length; i < il; i++) { 
      var name = grid.jqGrid('getCell', ids[i], 'Name'); 
      names.push(name); 
     } 
     //alert ("Names: " + names.join(", ") + "; ids: " + ids.join(", ")); 
     $("#names").html(names.join(", ")); 
     $("#dialog-confirm").dialog({ 
      height:280, 
      modal:true, 
      buttons:{ 
       'Cancel': function(){ 
        $(this).dialog('close'); 
       }, 
       'Confirm': function(){ 
        //alert("Confirm"); 
        $.ajax({ 
         type: "POST", 
         url: "/cpsb/unprocessedOrders.do", 
         data: { method: "releaseTowics", 
          orderNum: JSON.stringify(ids), 
          names: JSON.stringify(names) 
         }, 
         dataType: "json", 
         success: function(msg){ 
          alert(msg); 
         }, 
         error: function(res, status, exeption) { 
          alert(res); 
         } 
        }); 
       } 
      } 
     }); 
    } 
}); 

La soluzione esatta di causa volontà dipende dal vostro requisito sul lato server. Puoi provare questo (senza richiesta di autorizzazione) qui http://www.ok-soft-gmbh.com/jqGrid/DataToMultiSelect2.htm. Seleziona alcuni elementi e fai clic sul pulsante "Ricevi selezionati".  

+0

grazie! questo è esattamente ciò che sto cercando ... – paul

+0

@Oleg: Come possiamo usare la finestra di dialogo di conferma predefinita di jqGrid? –

+1

@ITppl: prova il seguente codice: '$ .jgrid.info_dialog (" un titolo che potrebbe essere HTML testo "," un altro HTML text ", true);' . È possibile utilizzare un parametro aggiuntivo per opzioni aggiuntive: consultare [il codice sorgente] (https://github.com/tonytomov/jqGrid/blob/v4.4.1/js/grid.common.js#L184-200) – Oleg