如何在jqgrid中使用列过滤器获取表单数据?

时间:2014-09-17 06:06:24

标签: jquery jqgrid jqgrid-php

如何在jqgrid中的列过滤器中获取表单数据

我还使用了Link

中更新的答案代码来使用外部复选框

我使用了工作示例参考Link

jQuery("#list451").jqGrid({ 
url:'getList.php?mode=result_list', 
datatype: "json",
height: 255, 
width: 600, 
colNames:['Index','Name', 'Code','Result'], 
colModel:[
{name:'item_id',index:'item_id', width:65, sorttype:'integer',searchoptions:{sopt:['eq','ne','le','lt','gt','ge']}},
{name:'item',index:'item', width:150, sorttype:'string',searchoptions:{sopt:['eq','bw','bn','cn','nc','ew','en']}},
{name:'item_cd',index:'item_cd', width:100} ,
{name:'result',index:'result', width:100,sorttype:'string',searchoptions:{sopt:['eq','ne']} ], 
rowNum:50, 
rowTotal: 200,
rowList : [20,30,50], 
loadonce:false, 
mtype: "GET", 
rownumbers: true,
rownumWidth: 40, 
gridview: true, 
pager: '#pager451', 
sortname:'item_id', 
viewrecords: true, 
sortorder: "asc", 
caption: "Loading data from server at once" });
jQuery("#list451").jqGrid('filterToolbar',{searchOperators : true});

外部复选框代码脚本中的操作

 //Pass fail code check box
            $("#pass").change(function() {
                var f = {groupOp:"AND",rules:[]};
                if($("#pass").is(':checked')) {
                   f.rules.push({field:"result",op:"eq",data:"pass"});
                }

                grid[0].p.search = f.rules.length>0;
                $.extend(grid[0].p.postData,{filters:JSON.stringify(f)});
                grid.trigger("reloadGrid",[{page:1}]);
            });

复选框html代码在

下面
<input type="checkbox" name="pass" id="pass">Pass

在上面的通过/失败代码工作复选框中,单击以对网格中的通过/失败进行排序。

我想如果选中了复选框,那么我将在搜索框中输入项目名称,并在输入到服务器端未获得通行复选框值后选择不相等的搜索操作。我有一个搜索框值和搜索运算符,但我没有得到传递复选框值。

我想在服务器端传递复选框值。请帮助我

1 个答案:

答案 0 :(得分:2)

我不确定我是否正确理解了您的问题。如果您使用远程 datatype(如代码中的datatype: "json")并且未使用loadonce: true选项,则服务器负责返回过滤后的数据服务器获取filters参数。它是the documentation中描述的格式的JSON格式字符串。如果您以格式实现filters的解码,则可以使用 jqGrid的任何搜索/过滤功能(高级搜索,过滤工具栏等)。

如果您在根据标准filters参数实施过滤时遇到问题,则可以自由格式发送有关过滤器的信息,您可以自行定义。有关详细信息,请参阅the answer。如果the demo来自the answer,则会有一个包含ids cb_pendingcb_processingcb_delivered的复选框。如果您要添加postData参数,例如以下表格

postData: {
    pending: function () { return $("#cb_pending").is(':checked'); },
    processing: function () { return $("#cb_processing").is(':checked'); },
    delivered: function () { return $("#cb_delivered").is(':checked'); }
}

然后每次都会将pendingprocessingdelivered参数添加到服务器中。

或者,您可以使用jQuery.serializejQuery.serializeArray一次获取一个HTML表单的所有值,而不是按ID分别对每个复选框进行排队。