2011-11-12 30 views
7

Czy można dodać weryfikację modelu do edycji lub dodać formularz jqgrid? Jeśli tak, to w jaki sposób? Wiem, że mogę utworzyć niestandardowe sprawdzanie poprawności dla każdego pola w formularzu jqGrid, ale w jaki sposób można zintegrować domyślną walidację MVC3 z jqGrid?jqGrid & MVC3 - Dodawanie sprawdzania poprawności modelu

Robiłem to, tworząc niestandardowy przycisk, który ładuje częściowy widok w oknie dialogowym jQuery. Jednak nie chciałbym wykonywać innego połączenia z kontrolerem, biorąc pod uwagę, że mogę uzyskać wszystkie wartości z mojego wiersza bezpośrednio (nawet jeśli stracę walidację modelu częściowego) za pośrednictwem metod jqGrid get Methods.

Jakieś wskazówki?

+0

Znalazłem to pytanie użyteczne i interesujące. Czy istnieje odpowiedź lub podobne pytania? DZIĘKI! – Larry

+1

@ Larry, Nope. Do tej pory nie widziałem żadnej odpowiedzi ani podobnych pytań. Jednak całkiem proste jest użycie częściowego widoku i załadowanie go do okna dialogowego jquery. Jeśli naprawdę chcesz użyć domyślnego okna dialogowego, możesz sprawdzić komercyjny jqGrid. Ma prawie pełną integrację z asp.net mvc3. – AdrianoRR

+0

THX Adriano! Już używam jqgrid w oknach dialogowych jquery. Teraz muszę dodać/edytować rekordy i mam kilka walidacji, w tym niestandardowe zdalne sprawdzanie poprawności w niektórych polach. Czy masz inne sugestie/wskazówki? Dziękuję Ci! – Larry

Odpowiedz

0

Chociaż nie jestem zaznajomiony z jqGrid, zwykle zrobiłem to samo, co w przypadku wypełniania okien dialogowych jQuery z akcji kontrolera, która renderuje częściowy widok.

Zamiast wykonywać wywołania zwrotnego, można załadować widok częściowy podczas renderowania widoku jqGrid. Następnie wypełnij pola z wybranego wiersza. Oto przykładowy kod do rozważenia, nietestowany.

Twój Siatka Widok:

@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

Przykład:

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

Walidacja jest tutaj editrules:{email:true, required:false} (tak, jeśli to pole jest puste to jest OK, ale jeśli zawiera nieprawidłowe sprawdzanie poczty e-mail nie powiedzie się).

Więcej informationa i przykłady w jqGrid Wiki

A jeśli chcesz zrobić ten test bez modyfikowania kodu JS można używać formantów z Trirand, które pozwalają zrobić to na stronie serwera

Powiązane problemy