jqGrid търсене от страна на клиента

Бих искал ръчно да приложа търсене към моя jqGrid чрез JavaScript. Опитах ръководство тук, но не мога изглежда не го карам да работи напълно. В настройката на мрежата имам колона с име „error_column“, в която бих искал да извърша търсене за низа „Тест“.

Ето какво имам досега:

var filter = { "field": "error_column", 'oper': 'eq', "data": 'Test' };
$("Grid2").jqGrid('setGridParam', { search: true, postData: { filters: filter} })
$("Grid2").trigger('reloadGrid');

Когато щракна върху бутона, към който това е свързано, нищо не се случва и не предизвиква грешки.

РЕДАКТИРАНЕ Ето кода за инициализиране на мрежата:

jQuery("#Grid2").jqGrid({
    datatype: "local",
    height: 250,
    colNames: ['NewSubscriberID', 'Conflicting Subscriber ID', 'Error Field', 'Error Message'],
    colModel: [
        { name: 'new_subscriber_id', index: 'new_subscriber_id', width: 120},
        { name: 'conflicting_subscriber_id', index: 'conflicting_subscriber_id', width: 170},
        { name: 'error_column', index: 'error_column', width: 90, sorttype: "text", search: true},
        { name: 'error_type', index: 'error_type', width: 145}
    ],
    loadonce: true
    });

Свързвам данните към мрежата с помощта на локален масив.


person bpruitt-goddard    schedule 20.12.2010    source източник
comment
Използвате ли предварително търсене (multipleSearch:true) или не? Ако използвате търсене в лентата с инструменти, важно е дали използвате stringResult:true или не. Би било по-добре, ако включите повече код във вашия въпрос.   -  person Oleg    schedule 20.12.2010
comment
Не използвам многократно търсене, тъй като данните трябва да се търсят само в една колона. Актуализирах въпроса, за да включва кода за инициализация.   -  person bpruitt-goddard    schedule 21.12.2010


Отговори (1)


Трябва да приложите търсене за едно поле по малко по-различен начин:

var grid = jQuery("#Grid2");
var postdata = grid.jqGrid('getGridParam','postData');
jQuery.extend (postdata,
               {filters:'',
                searchField: 'error_column',
                searchOper: 'eq',
                searchString: 'Test'});
grid.jqGrid('setGridParam', { search: true, postData: postdata });
grid.trigger("reloadGrid",[{page:1}]);

Можете да видите пример на живо тук.

АКТУАЛИЗИРАНО: Използвате loadonce: true и datatype: "local" заедно. Стойността loadonce: true ще бъде игнорирана в случай на datatype: "local". Ако получите данните от сървъра и използвате datatype: "json" или datatype: "xml", тогава loadonce: true ще работи. Ако искате търсенето (филтрирането) да се извършва не локално, а на сървъра, трябва да нулирате datatype на 'json' или 'xml' като допълнителна опция на 'setGridParam'.

person Oleg    schedule 22.12.2010
comment
Човече, беше точно това, което търсех! Много благодаря - person Stéphane; 16.06.2011
comment
Точно това търсех и аз! Благодаря! - person aknatn; 19.12.2011
comment
За информация, промених го, за да поддържа многократно търсене по следния начин: var grid = jQuery("#list27"); var postdata = grid.jqGrid('getGridParam','postData'); jQuery.extend (postdata, {filters:'{"groupOp":"AND","rules":[{"field":"field1","op":"ge","data":"search string here"},{"field":"field2","op":"ge","data":"search string here"}]}'}); grid.jqGrid('setGridParam', { search: true, postData: postdata }); grid.trigger("reloadGrid",[{page:1}]); - person aknatn; 19.12.2011
comment
@aknatn: можете да намерите тук и тук е показано как да конструирате filters като обект и след това да го сериализирате в JSON с JSON.stringify. - person Oleg; 19.12.2011
comment
@Oleg каква точно е корекцията (за единичното търсене VS филтри).. ? извикването на .extend() ли е за предаване на оригинални стойности?? - person diegohb; 19.03.2012