Перезагрузка элементов 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"});
});
Другие вопросы по тегам