如何从服务器端的jqgrid获取搜索参数?

时间:2011-11-17 01:45:10

标签: jqgrid

几个月前,我一直在访问这个论坛而没有注册,我真的很喜欢它。所以,提前感谢所有成员。现在我想提出我的第一个问题。

我一直在使用Jqgrid一段时间,我设法让它显示行和按钮,但现在我需要进行搜索,复杂的搜索,我认为“自动”jqgrid会将参数发送到服务器,我的意思是:

  

sField,searchField,sOper,searchOper,sValue,searchString,sFilter和/或过滤器

我不确定它必须发送哪些内容,我认为它与发送'page','rows'和'sord'的内容相同。但我错过了一些东西,因为,例如,我可以使用以下方式获取'page','rows'和'sord':

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

但是我没有得到任何结果:

$params = $_REQUEST['filters']

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

我正在使用PHP,Zend和json。

我没有发布任何代码,因为我的疑问是通用的,但如果需要,我会这样做。

我搜索了很多,并阅读了文档,但我只是没有看到它。感谢您的帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

好吧,我会回答我自己的问题,只是为了分享。我刚刚添加'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”,网格将不再过滤。