Добавление функции в jqGrid для добавления локального JSON - PullRequest
0 голосов
/ 17 июня 2011

Я пытаюсь создать дополнительную функцию для jqGrid, чтобы упростить добавление данных JSON в сетку, в которой используются локальные данные. Следующая попытка работает, за исключением одной строки, которая приводит к сбою.

  $.fn.myrows = function(data) {
    $(this).clearGridData();
    $(this).jqGrid("setGridParam", {datatype: "json", loadonce: true});
    $("#" + (this).selector)[0].addJSONData(data); // PROBLEMATIC LINE
    $(this).jqGrid("setGridParam", {datatype: "local", loadonce: true});
  };

Эта функция затем называется $("#myGrid").myrows(jsonDataObject);.

Обратите внимание, что эти строки работают, когда они не находятся внутри этой функции.

Есть идеи? Спасибо!

Ответы [ 2 ]

2 голосов
/ 18 июня 2011

В ответе на ваш предыдущий вопрос я попытался объяснить, как расширить jqGrid для поддержки нового метода. Честно говоря, я не вижу, какое реальное преимущество вы получите от расширения jqGrid. Почему бы просто не определить свою функцию как

var myrows = function(grid,data) {
    // function body
};

и используйте его так:

myrows($("#myGrid"),jsonDataObject);

Гораздо важнее, на мой взгляд, реализация того, что вам нужно. Ваш текущий код имеет много недостатков. Если сетка имеет datatype: "local", то можно использовать локальный пейджинг данных. Метод addJSONData добавляет все данные в сетку, поэтому размер страницы может быть нарушен.

Если у вас есть datatype: "local" и вы хотите заполнить его данными, то наиболее эффективным способом будет установить data параметр сетки относительно setGridParam, а затем просто позвонить $("#myGrid").trigger('reloadGrid',[{page:1}]) (см. здесь ).

В качестве альтернативы вы можете использовать многие другие существующие методы, такие как addRowData , который позволяет добавлять множество строк данных за один вызов метода.

Если вы получите данные JSON с сервера и сможете заполнить сетку методом addJSONData, это будет действительно плохой путь. Версии jqGrid, начиная с версии 3.5, имеют богатые способы настройки используемого запроса ajax. Поэтому строго рекомендуется не использовать addJSONData в этом случае. Подробнее см. здесь .

0 голосов
/ 17 июня 2011

У вас есть опечатка, сделайте это на линии:

$("#" + $(this).selector)[0].addJSONData(data); // PROBLEMATIC LINE

$ отсутствовал до this

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...