Poszłam przez to, więc oto jak to zrobiłem:
Skopiuj zawartość egzaminu e6-ajax-loading.html (w pobraniu SlickGrid) do pliku html - nazwijmy go mygrid.html (lub do kodu, który generuje html. W moim przypadku używam CodeIgniter, więc skopiowałem do mygrid_view.php).
Skopiuj plik slick.remotemodel.js do yourRemoteModel.js.
W "mygrid.html" upewnij się, że masz poprawną ścieżkę do wszystkich plików javascript. Zmień plik slick.remotemodel.js na yourRemoteModel.js. Wyeliminuj wszelkie zduplikowane skrypty - na przykład, jeśli już korzystasz z najnowszej wersji jQuery, wyeliminuj linię w pliku "mygrid.html", która pobiera jquery-1.4.3.min.js.
W "mygrid.html" zmień inicjalizację zmiennej "columns", aby dopasować dane, które chcesz wyświetlić z bazy danych. Zwróć uwagę na właściwość pola. To musi zgadzać się z nazwami właściwości, które zostaną zwrócone w odpowiedzi JSON z twojego serwera. (* patrz uwaga na ten temat na końcu).
W pliku yourPemoteModel.js zmień zmienną adresu URL, aby wskazywała na serwer, przekazując odpowiednie argumenty. W moim przypadku mijam stron i wierszy paramters do mojego serwera tak: "? Page ="
var url = myServerUrl + fromPage + "& wiersze =" + (((toPage - fromPage) * PAGESIZE) + pageSize);
W yourRemoteModel.js zmienić połączenia jsonp do ajax - chyba trzeba to zrobić między domenami, w takim przypadku będziemy chcieli zostać z jsonp, w przeciwnym razie można go zmienić, aby wyglądać tak:
req = $.ajax({
url: url,
dataType: 'json',
success: onSuccess,
error: function(){
onError(fromPage, toPage)
}
});
W yourRemoteModel.js musisz teraz dostosować funkcję onSuccess(). Postępuj zgodnie ze wzorcem przykładu, ustawiając z i na jako całkowite przesunięcia w rekordach danych, ustawiając data.length na całkowitą liczbę rekordów, a następnie ustawiając tablicę danych. Ten kod zależy od tego, jak wygląda odpowiedź JSON z Twojego serwera.
Teraz napisz kod na serwerze, aby wygenerować odpowiedź JSON. Jak widać z kroku 7, musi to obejmować przesunięcie rekordu (lub strony) do danych oraz wskazanie, ile rekordów jest zwracanych, jak również tablicę samych rekordów. Pamiętaj, że każde pole każdego rekordu musi mieć nazwę właściwości, która pasuje do ustawienia "pola" w definicjach kolumn (od kroku 4 powyżej).Spójrz na odpowiedź od Wykop jako przykład:
http://services.digg.com/search/stories?query=apple&offset=0&appkey=http://slickgrid.googlecode.com&type=javascript&callback=cb
I to powinno wystarczyć!
* Uwaga: w moim przypadku nie chciałem używać przepustowości do zwracania wszystkich nazw właściwości powtarzanych dla każdego rekordu w odpowiedzi JSON, więc zamiast tego zwracam tablicę wartości rekordów. Następnie ustawiam właściwość pola w opisie kolumny (krok 4 powyżej) na offset całkowity w tej tablicy. Tak więc w opisach kolumn, zamiast pola: "someFieldName", używam pola: 3, następnie w moim zdalnym modelu funkcja onSuccess() Ustawiam dane [od + i] = resp.record [i] .data (gdzie .data jest tablicą w odpowiedzi JSON wartości pól w rekordzie) .Jednak wydaje się, że działa dobrze dla mnie (ale może być trudniej do debugowania, jeśli coś pójdzie nie tak)
Proszę zobaczyć mój kod (slick.remote.js) w tym [post] (http://stackoverflow.com/questions/7149639/slikgrid-virtual -scrolling-ogromny-dataset) na przykład. @vulcan - dziękuję za twoje kroki, które pomogły mi zacząć od przykładu ajaxowego. Nie zaimplementowałem jeszcze filtrowania. – StudentForever