2011-11-12 13 views
7

È possibile aggiungere la convalida del modello a una modifica o a un modulo jqgrid? Se sì, come si farebbe? So che posso creare la convalida personalizzata per ogni campo su un modulo jqGrid, ma come si potrebbe integrare la convalida MVC3 predefinita a jqGrid?jqGrid e MVC3 - Aggiunta della convalida del modello

L'ho fatto creando un pulsante personalizzato che carica una vista parziale su una finestra di dialogo jQuery. Tuttavia, mi piacerebbe non fare un'altra chiamata al controller, considerando che posso ottenere direttamente tutti i miei valori di riga (anche se perderei le convalide del modello di visualizzazione parziale) tramite jqGrid get Methods.

Eventuali suggerimenti?

+0

Ho trovato questa domanda utile e interessante. Esiste una risposta o domande simili? GRAZIE! – Larry

+1

@Larry, No. Fino ad ora non ho visto nessuna risposta o domande simili. Tuttavia, è piuttosto semplice utilizzare una vista parziale e caricarla su una finestra di dialogo jquery. Se vuoi davvero usare la finestra di dialogo predefinita, puoi controllare il jqGrid commerciale. Ha quasi piena integrazione con asp.net mvc3. – AdrianoRR

+0

THX Adriano! Sto già usando jqgrid su finestre di dialogo jQuery. Ora ho bisogno di aggiungere/modificare record e ho diverse convalide, tra cui convalide remote personalizzate su alcuni campi. Hai altri suggerimenti/suggerimenti, per favore? Grazie! – Larry

risposta

0

Anche se non ho familiarità con jqGrid, in genere ho fatto la stessa cosa per quanto riguarda il popolamento di finestre di dialogo jQuery da un'azione del controller che esegue il rendering di una vista parziale.

Invece di eseguire una richiamata, è possibile caricare la vista parziale quando viene visualizzata la vista jqGrid. Quindi basta compilare i campi dalla riga selezionata. Ecco alcuni esempi di codice da considerare, non testati però.

griglia Vista:

@model List<Customer> 

<!-- create jqGrid here --> 

@Html.PartialView("CustomerForm",new Customer()); 

CustomerForm:

@model Customer 

<div id="CustomerForm"> 
@using (Html.BeginForm("Save","Customer",...)) 
{ 
    @Html.HiddenFor(m => m.CustomerId) 
    <div class="control-group"> 
     @Html.LabelFor(m => m.CustomerName) 
     <div class="controls"> 
      @Html.EditorFor(m => m.CustomerName) 
      @Html.ValidationFor(m => m.CustomerName) 
     </div> 
    </div> 
    <p><input type="submit" id="submit" value="Save" /></p> 
} 
</div> 

<script type="text/javascript"> 
    var $cf = $('#CustomerForm'); 
    $cf.dialog({ autoOpen: false }); // see jquery ui docs for exact options 


    $('#myGrid .edit, #myGrid .add').click(function() { 
     $(this).closest('tr').find('input, select').each(function() { 
      $('input[name='+this.name+'], select[name='+this.name+']',$cf).val($(this).val()); 
     }); 
     $cf.dialog('open'); 
    }); 
</script> 
0

Esempio:

$(document).ready(function() { 
    $("#jqg").jqGrid({ 
     url: '@Url.Action("GetData")', 
     datatype: "json", 
     colNames: ['User name', 'Email'], 
     colModel: [ 
     { name: 'UserName', index: 'UserName', width: 150, sortable: true, editable: true }, 
     { name: 'Email', index: 'Email', width: 150, sortable: true, editable: true, editrules:{email:true, required:false}} 
     ], 
     caption: "User List" 
    }); 

convalida è qui editrules:{email:true, required:false} (quindi, se questo campo è vuoto è ok, ma se contiene un controllo email non valido fallisce).

Più informationa ed esempi in jqGrid Wiki

E se si vuole fare questo controllo, senza modificare il codice JS è possibile utilizzare i controlli da Trirand, che ti permettono di farlo sul lato server

Problemi correlati