Как я могу получить параметры поиска из jqgrid на стороне сервера? - PullRequest
0 голосов
/ 17 ноября 2011

Я посещал этот форум много раз без регистрации с тех пор, как несколько месяцев назад, и мне очень нравится. Итак, заранее спасибо всем участникам. Теперь я хотел бы задать свой первый вопрос.

Я использовал Jqgrid в течение некоторого времени, и мне удалось отобразить строки и кнопки, но теперь мне нужно выполнить сложный поиск, и я подумал, что "автоматически" jqgrid отправить параметры на сервер, я имею в виду:

sField, searchField, sOper, searchOper, sValue, searchString, sFilter и / или фильтры

Я совсем не уверен, какие из них нужно отправлять, и я подумал, что это будет то же самое, что и «page», «rows» и «sord». Но я что-то упускаю, потому что, например, я могу получить «страницу», «строки» и «sord», используя:

$limit = $this->getRequest()->getParam('rows', 10);

но я ничего не получаю, используя:

$params = $_REQUEST['filters']

или

$params = $this->getRequest()->getParam('sFilter');

Я использую PHP, Zend и JSON.

Я не публиковал код, потому что мои сомнения носят общий характер, но я сделаю это, если понадобится.

Я много искал и читал документацию, но просто не вижу. Буду признателен за вашу помощь, спасибо!

1 Ответ

1 голос
/ 24 декабря 2011

Ну, я отвечу на свой вопрос, просто чтобы поделиться. Я только добавил «loadonce», и это сработало.

Это версия моего фактического кода JavaScript:

$(document).ready(function() {

var filtro = {"groupOp":"AND","rules":[{"field":"Col1","op":"eq","data":""},
                                   {"field":"Col3","op":"eq","data":""}
                                   {"field":"Col4","op":"eq","data":""}]};

$("#lista").jqGrid( {
    url:'/module/controller/json-action',
    datatype: "json",
    postData: { filters: JSON.stringify(filtro) },
    mtype: 'POST',
    colNames:[, 'Col1', 'Col2','Col3','Col4'],
    colModel:[  
                {name:'N°',index:'ID', width:60, align:"center", hidden:true},
                {name:'Col1',index:'Col1', width:150, search:true, searchoptions: { sopt: ['eq'] } },
                {name:'Col2',index:'Col2', width:250, align:"left", search:false},
                {name:'Col3',index:'Col3', width:120, align:"left", search:true, searchoptions: { sopt: ['eq'] }},
                {name:'Col4',index:'Col4', width:60, align:"center", search:true, searchoptions: { sopt: ['eq'] }}]
    , rowNum:10
    , rowList:[10,20,30]
    , pager: '#pager'
    , sortname: 'ID'
    , viewrecords: true
    , sortorder: "desc"
    , caption:"Listado de ejemplo"
    , loadonce: true
    , onSelectRow: function(id) {
         $("#ID").val(id);
      }
    , ondblClickRow: function(id) {
        $("#edit").submit();
    }
}); 

$("#lista").jqGrid(
        'navGrid', '#pager', { edit:false, add:false, del:false }, 
        {},// settings for edit
        {},// settings for add
        {},// settings for delete
        {   multipleSearch:true/*activa la búsqueda avanzada*/, 
            closeAfterSearch:true, closeAfterReset:true, recreateFilter:true,
            /*la función que define la búsqueda*/
            onSearch: function() {}//fin onSearch
            ,
            //the search criteria that user selected before pressing find use below code:
            onClose:function() {
            }//fin onClose

        }
);

});//fin document ready

Все, что я сделал, это просто добавил «loadonce: true». если я уберу «loadonce: true», сетка больше не будет фильтроваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...