Ответ 1
Я просто прошел через это, так вот как я это сделал:
-
Скопируйте содержимое example6-ajax-load.html(в загрузке SlickGrid) в свой html файл - позвоните ему mygrid.html(или в свой код, который генерирует html. В моем случае я использую CodeIgniter, поэтому я скопировал файл mygrid_view.php).
-
Скопируйте файл slick.remotemodel.js в вашRemoteModel.js.
-
В "mygrid.html" убедитесь, что у вас есть правильный путь ко всем файлам javascript. Измените slick.remotemodel.js на yourRemoteModel.js. Устраните любые повторяющиеся скрипты - для exmaple, если вы уже затягиваете последнюю версию jQuery, тогда устраните строку в "mygrid.html" , которая вытаскивает jquery-1.4.3.min.js.
-
В "mygrid.html" измените инициализацию переменной "columns" в соответствии с данными, которые вы хотите отобразить из своей базы данных. Обратите внимание на свойство поля. Это должно совпадать с именами свойств, которые будут возвращены в ответ JSON с вашего сервера. (* см. примечание об этом в конце).
-
В yourRemoteModel.js измените переменную url, чтобы указать на ваш сервер, передав соответствующие аргументы. В моем случае я передаю страницы и строит параметры на свой сервер следующим образом:
var url = myServerUrl + "? page =" + fromPage + "& rows =" + (((toPage - fromPage) * PAGESIZE) + PAGESIZE);
-
В yourRemoteModel.js измените вызов jsonp на ajax - если вам не нужно делать этот кросс-домен, и в этом случае вы захотите остаться с jsonp, иначе вы можете изменить его так, чтобы он выглядел следующим образом:
req = $.ajax({ url: url, dataType: 'json', success: onSuccess, error: function(){ onError(fromPage, toPage) } });
-
В yourRemoteModel.js теперь вы должны настроить функцию onSuccess(). Следуйте образцу примера, задав значения из и для целочисленных смещений в записях данных, установив data.length как общее количество записей, а затем установив массив данных. Этот код зависит от того, как выглядит ответ JSON с вашего сервера.
-
Теперь напишите код на сервере, чтобы сгенерировать ответ JSON. Как вы можете видеть из шага 7, это должно включать смещение записи (или страницы) в данные и указание количества возвращаемых записей, а также массив самих записей. Помните, что каждое поле каждой записи должно иметь имя свойства, которое соответствует параметру "field" в определениях столбцов (начиная с шага 4 выше). Взгляните на ответ от Digg в качестве примера:
И это должно быть!
* Примечание: в моем случае я не хотел использовать пропускную способность, чтобы возвращать все эти имена свойств, повторяющиеся для каждой записи в ответе JSON, поэтому вместо этого возвращаю массив значений записи. Затем я устанавливаю свойство поля в описании столбца (шаг 4 выше) как целочисленное смещение в этот массив. Поэтому в описаниях столбцов вместо поля: "someFieldName", я использую поле: 3, то в моей удаленной модели функция onSuccess() я устанавливаю данные [from + i] = resp.record [i].data( где .data - это массив в ответе JSON значений полей в записи). Пока это, похоже, хорошо работает для меня (но может быть сложнее отладить, если что-то пойдет не так).