Перезагрузка элементов dataurl в jqGrid
У меня есть простая сетка со следующими параметрами:
jQuery("#mygrid").jqGrid({
url: 'dataurl.htm',
datatype: 'json',
ajaxSelectOptions: { cache: false }
...
colModel: [
{ name: 'foo', index: 'foo', width: 25, stype: 'select', searchoptions:{ sopt:
['eq'], dataUrl: 'someurl.htm?columnName=foo'}}
]
});
Тем не менее, когда я звоню $("#mygrid").trigger("reloadGrid");
он загружает только данные для таблицы из dataurl.htm
но он не загружает данные для foo
колонка из some url.htm
ссылка на сайт.
Я прочитал пару вопросов, подобных этим на SO, и было предложено иметь ajaxSelectOptions: { cache: false }
но это не работает для меня.
someurl.htm
возвращается <select> <option val=''>something</option></select>
1 ответ
Это абсолютно правильный вопрос! Текущая реализация jqGrid имеет только toggleToolbar
метод, который может скрыть панель инструментов, но сама панель инструментов будет создана один раз. Таким образом, все свойства панели инструментов остаются неизменными все время.
Для решения проблемы я написал небольшой дополнительный метод destroyFilterToolbar
что довольно просто:
$.jgrid.extend({
destroyFilterToolbar: function () {
"use strict";
return this.each(function () {
if (!this.ftoolbar) {
return;
}
this.triggerToolbar = null;
this.clearToolbar = null;
this.toggleToolbar = null;
this.ftoolbar = false;
$(this.grid.hDiv).find("table thead tr.ui-search-toolbar").remove();
});
}
});
Демо использует метод. После изменения свойств некоторых столбцов можно восстановить панель инструментов поиска. В приведенном ниже коде можно изменить язык некоторых текстов из панели инструментов поиска:
Соответствующий код ниже:
$("#recreateSearchingToolbar").change(function () {
var language = $(this).val();
// destroy searching toolbar
$grid.jqGrid("destroyFilterToolbar");
// set some searching options
$grid.jqGrid("setColProp", "closed",
language === "de" ?
{searchoptions: {value: ":Beliebig;true:Ja;false:Nein"}} :
{searchoptions: {value: ":Any;true:Yes;false:No"}});
$grid.jqGrid("setColProp", "ship_via",
language === "de" ?
{searchoptions: {value: ":Beliebig;FE:FedEx;TN:TNT;IN:Intim"}} :
{searchoptions: {value: ":Any;FE:FedEx;TN:TNT;IN:Intim"}});
// create new searching toolbar with nes options
$grid.jqGrid("filterToolbar", {stringResult: true, defaultSearch: "cn"});
});