Поиск панели инструментов jQgrid - динамически удалять поле поиска из любого столбца

Я использую jqgrid версии 4.4.4, и прямо сейчас я столкнулся с одной проблемой, связанной с поиском на панели инструментов. Как я упоминал в заголовке, я хочу удалить окно поиска панели инструментов из любого столбца "динамически" во время или после рендеринга сетки. Я гуглил, но не нашел подходящего решения по этой проблеме. Я использовал свойство selColProp, подобное этому

$('#<gridId>').jqGrid('setColProp', 'LotNo', {
    search: false
});

и упоминается в функции loadcomplete по какой-то логической причине. Если кто-то знает, как это сделать, пожалуйста, поделитесь своими ценными идеями.

ОБНОВЛЕНО: Теперь я использую бесплатную версию jqgrid 4.9.2, и эта функция также не работает на ней.


person Rahul More    schedule 08.07.2015    source источник


Ответы (1)


Панель инструментов поиска будет создана один раз. Он включает все доступные для поиска столбцы на панели инструментов поиска. Если вам нужно изменить свойство search динамически, вам придется заново создать панель инструментов поиска после изменения значения свойства search. Вам нужно просто вызвать destroyFilterToolbar, чтобы удалить панель инструментов поиска, а затем еще раз вызвать filterToolbar.

В качестве альтернативы вы можете просто скрыть поле поиска после установки свойства search на false. Соответствующий код может быть чем-то вроде

$("#gs_LotNo").closest(".ui-search-table").hide();

Строка gs_LotNo — это идентификатор поля ввода столбца LotNo. и используя $("#gs_LotNo").closest(".ui-search-table"), вы получаете внешнюю таблицу, которая содержит дополнительное меню поиска и кнопку x. Вы можете сделать содержимое поля пустым ($("#gs_LotNo").val("")) перед тем, как скрыть его, чтобы быть уверенным, что текущее значение в поле ввода не будет использоваться в фильтрах.

person Oleg    schedule 09.10.2015
comment
Я удалил свой код setColProp и использовал ваш код, но ничего не произошло. Я вставил этот код в свою функцию loadComplete. - person Rahul More; 09.10.2015
comment
Вы не должны не удалять настройку search: false. Если вам нужно изменить значение search: false, вы должны сделать это и изменить панель инструментов поиска после этого (пересоздав панель инструментов или скрыв поле). Вы пишете об использовании setColProp в loadComplete. Почему? Я не могу следовать за тобой в этом деле. Что нужно делать и как часто? loadComplete будет вызываться после применения фильтра, после сортировки и пейджинга и так далее. Каков ваш сценарий? Как вы заполняете сетку? Когда вы меняете search свойство LotNo? Какие datatype и loadonce вы используете? - person Oleg; 09.10.2015
comment
вместо того, чтобы вызывать этот код в loadComplete, я вызвал ваш код в gridComplete и валлаааа.. Это сработало. Спасибо, сэр. - person Rahul More; 09.10.2015
comment
@Rahul: Добро пожаловать! Вызов такого кода в gridComplete мне тоже кажется неправильным. Я рекомендую вам опубликовать более полный код, который должен делать то, что вы делаете. Важно знать, как вы заполняете сетку данными, какие datatype и loadonce используете, когда позже решите изменить свойства. Если вы загружаете информацию с сервера и используете datatype: "json", вы можете изменить свойство столбца, например, в обратном вызове beforeProcessing. - person Oleg; 09.10.2015
comment
Да.. вы абсолютно правы, мы с datatype: json не использовали свойство loadonce. - person Rahul More; 09.10.2015
comment
@Rahul: я рекомендую вам прочитать старый ответ о разнице между loadComplete и gridComplete и ответ и этот в качестве примеров изменения colModel на основе ответа сервера внутри beforeProcessing - person Oleg; 09.10.2015