2010-01-25 26 views
11

Mam siatkę drzewa z automatycznym ładowaniem wierszy. Celem jest posortowanie siatki według kolumny drzewa, zaraz po stronie klienta po stronie klienta.jqGrid sortowanie po stronie klienta

Ale za każdym razem, gdy klikam na nagłówku kolumny sortowania, to wydaje połączenie Ajax do sortowania, ale wszystko, czego potrzebuję, to sortowanie na miejscu z wykorzystaniem danych lokalnych.

Czy mam niepoprawne parametry siatki lub czy drzewo nie działa z sortowaniem po stronie klienta w kolumnie drzewa?

Aktualne jqGrid params do sortowania są to:

loadonce: true, // to enable sorting on client side 
sortable: true //to enable sorting 
+0

http://stackoverflow.com/questions/1329002/jqgrid-loadonce-doesnt-work-with-asp-net – queen3

Odpowiedz

7

Aby uzyskać po stronie klienta sortowania do pracy, musiałem zadzwonić reloadGrid po siatka została załadowana:

loadComplete: function() { 
    jQuery("#myGridID").trigger("reloadGrid"); // Call to fix client-side sorting 
} 

nie mam aby to zrobić na innej siatce w mojej aplikacji, ponieważ została skonfigurowana do używania danych pobranych przez inne wywołanie AJAX, zamiast danych pobranych bezpośrednio przez sieć:

editurl: "clientArray" 
datatype: "local" 
+0

Cześć mógłbyś rozwinąć trochę więcej o tym, co #groups jest? – DavidS

+0

To tylko identyfikator sieci. Właśnie zmieniłem identyfikator, aby spróbować to wyjaśnić. –

+1

Dziękuję za to, chociaż nie w pełni rozumiem twoje rozwiązanie. Jest inna odpowiedź Groxx na http://stackoverflow.com/questions/1329002/jqgrid-loadonce-doesnt-work-with-asp-net, która robi lewę. Na wszelki wypadek, jeśli ktoś jest zainteresowany ... – DavidS

2

Używam sortowania po stronie klienta na jqGrid i pobieranie nowego zestawu danych json, gdy lista wyboru ulegnie zmianie. Musisz ustawić rowTotal na wartość wyższą lub równą liczbie zwróconych wierszy, a następnie ustawić typ danych na "json" tuż przed ponownym załadowaniem siatki.

// Select list value changed 
$('#alertType').change(function() { 
     var val = $('#alertType').val(); 
     var newurl = '/Data/GetGridData/' + val; 
     $("#list").jqGrid().setGridParam({ url: newurl, datatype: 'json' }).trigger("reloadGrid");   
}); 

// jqGrid setup 
$(function() { 
     $("#list").jqGrid({ 
      url: '/Data/GetGridData/-1', 
      datatype: 'json', 
      rowTotal: 2000, 
      autowidth: true, 
      height:'500px', 
      mtype: 'GET', 
      loadonce: true, 
      sortable:true, 
      ... 
      viewrecords: true, 
      caption: 'Overview', 
      jsonReader : { 
       root: "rows", 
       total: "total", 
       repeatitems: false, 
       id: "0" 
      }, 
      loadtext: "Loading data...", 
     }); 
    }); 
1
$(function() { 
     $("#list").jqGrid({ 
      url: '/Data/GetGridData/-1', 
      datatype: 'json', 
      rowTotal: 2000, 
      autowidth: true, 
      height:'500px', 
      mtype: 'GET', 
      loadonce: true, 
      sortable:true, 
      ... 
      viewrecords: true, 
      caption: 'Overview', 
      jsonReader : { 
       root: "rows", 
       total: "total", 
       repeatitems: false, 
       id: "0" 
      }, 
      loadtext: "Loading data...", 
     }); 
    }); 
+2

Wyjaśnij też kod, aby stał się bardziej edukacyjny. – lpapp

Powiązane problemy