jquery-jqgrid: как разместить значение в поиске панели инструментов? - PullRequest
1 голос
/ 27 мая 2011

Этот скрипт панели поиска jqGrid:

<link rel="stylesheet" type="text/css" media="screen" href="jqGrid/css/ui.jqgrid.css" />
<link rel="stylesheet" type="text/css" media="screen" href="jqGrid/plugins/ui.multiselect.css" />
    <script src="jqGrid/js/i18n/grid.locale-en.js" type="text/javascript"></script>
    <script src="jqGrid/js/jquery.jqGrid.min.js" type="text/javascript"></script>
    <script src="jqGrid/js/jquery.jqGrid.src.js" type="text/javascript"></script>
    <script src="jqGrid/src/jquery.fmatter.js" type="text/javascript"></script>
    <script src="jqGrid/src/jqModal.js" type="text/javascript"></script>

jQuery("#list").jqGrid({
        url:'dounfinish.php',
        datatype: 'json',
        mtype: 'POST',
        colNames:['id','Date', 'Line'],
        colModel :[ 
                   {name:'def_id', index:'def_id', hidden:true, width:55}, 
                   {name:'Problem_date', index:'Problem_date', width:90, editable:true}, 
                   {name:'Line', index:'Line', width:80, align:'right',                   editable:true,search:true,stype:'text',searchoptions:{sopt:['cn']}}],
        pager: jQuery('#pager'),
        rowNum:10,
        rowList:[10,20,30],
        sortname: 'Problem_date',
        sortorder: "desc",
        viewrecords: true,
        imgpath: 'themes/basic/images',
        caption: 'OQC DEFECT DATA'
        });

jQuery("#list").jqGrid('navGrid','#pager',{edit:true,add:false,del:false,search:false});
jQuery("#list").jqGrid('filterToolbar', { stringResult: true, searchOnEnter: true, groupOp:'AND'});

А в консоли:

_search:true
nd:1306513344121
rows:10
page:1
sidx:Problem_date
sord:desc
filters:{"groupOp":"AND","rules":[{"field":"Line","op":"cn","data":"7"}]}

как мне сделать, чтобы опубликовать значение "данные"? так что я могу искать данные, используя поиск по панели инструментов.


grid

1 Ответ

2 голосов
/ 27 мая 2011

Вы должны просто использовать опцию defaultSearch:'cn' метода filterToolbar :

jQuery("#list").jqGrid('filterToolbar', {stringResult: true, defaultSearch:'cn'});

(я дополнительно удалил опции со значениями по умолчанию).

Есливы используете локальные данные сетки или параметр loadonce:true другой параметр jqGrid ignoreCase: true также может быть вам интересен.

ОБНОВЛЕНО : Если вы хотите использовать разныеПри поиске для разных столбцов вы должны использовать правильные опции colModel: searchoptions вместо searchoption (символ 's' в конце).

ОБНОВЛЕНО 2 : как выможете проверить здесь , если вы введете bla на панели инструментов поиска в столбце «Линия», запрос с данными

_search=true&nd=1306489580463&rows=10&page=1&sidx=Problem_date&sord=desc&filters=%7B%22groupOp%22%3A%22AND%22%2C%22rules%22%3A%5B%7B%22field%22%3A%22Line%22%2C%22op%22%3A%22cn%22%2C%22data%22%3A%22bla%22%7D%5D%7D

будет отправлен на сервер, который будет декодирован как

_search=true&nd=1306489580463&rows=10&page=1&sidx=Problem_date&sord=desc&filters={"groupOp":"AND","rules":[{"field":"Line","op":"cn","data":"bla"}]}

Таким образом, будет использоваться операция "cn".

ОБНОВЛЕНО 3 : Если вы используете datatype: 'json' без loadonce:true, сервер отвечает за сортировку, разбиение на страницы и фильтрацию данных .JqGrid просто отправляет соответствующую информацию в параметрах (rows, page, sidx, sord, _search:true, filters).Если вы не можете или не хотите делать все это на стороне сервера, вы можете просто использовать loadonce:true, и клиентская часть (сама jqGrid) изменит datatype на 'local' после первой загрузки и сам все сделаю, что тебе нужно.Это очень хорошо работает, если размер ваших данных небольшой (около 100 строк).Вы можете попробовать этот способ.

...