2011-11-12 15 views
7

¿Es posible agregar la validación del modelo a una edición o agregar el formulario jqgrid? Si es así, ¿cómo se haría? Sé que puedo crear una validación personalizada para cada campo en un formulario jqGrid, pero ¿cómo podría integrar la validación MVC3 predeterminada a jqGrid?jqGrid & MVC3 - Agregar la validación del modelo

Lo he estado haciendo creando un botón personalizado que carga una vista parcial en un cuadro de diálogo jQuery. Sin embargo, me gustaría no hacer otra llamada al controlador, teniendo en cuenta que puedo obtener todos los valores de mi fila directamente (aunque perdería las validaciones del modelo de vista parcial) a través de los métodos jqGrid get.

¿Alguna pista?

+0

Me encontraron esta pregunta útil e interesante. ¿Existe una respuesta o preguntas similares? ¡GRACIAS! – Larry

+1

@Larry, Nope. Hasta ahora no he visto ninguna respuesta o preguntas similares. Sin embargo, es bastante sencillo usar una vista parcial y cargarla en un diálogo de jquery. Si realmente desea usar el diálogo predeterminado, puede consultar el comercial jqGrid. Tiene una integración casi total con asp.net mvc3. – AdrianoRR

+0

THX Adriano! Ya estoy usando jqgrid en los cuadros de diálogo de jquery. Ahora necesito agregar/editar registros y tengo varias validaciones, incluidas validaciones remotas personalizadas en algunos campos. ¿Tiene otras sugerencias/consejos, por favor? ¡Gracias! – Larry

Respuesta

0

Si bien no estoy familiarizado con jqGrid, normalmente he hecho lo mismo con respecto a rellenar los cuadros de diálogo de jQuery desde una acción de controlador que representa una vista parcial.

En lugar de hacer una devolución de llamada, puede cargar la vista parcial cuando se representa la vista jqGrid. A continuación, rellene los campos de la fila seleccionada. Aquí hay algunos ejemplos de código a considerar, aunque no probados.

Su cuadrícula:

@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

Ejemplo:

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

La validación es aquí editrules:{email:true, required:false} (así, si este campo está vacío, no está mal, pero si contiene errores de verificación de correo electrónico no válidos).

Más informationa y ejemplos en jqGrid Wiki

Y si quieres hacer esta comprobación, sin modificar el código JS puede utilizar los controles de Trirand, que le permiten hacerlo en el lado del servidor

Cuestiones relacionadas