如何在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
在上面的通过/失败代码工作复选框中,单击以对网格中的通过/失败进行排序。
我想如果选中了复选框,那么我将在搜索框中输入项目名称,并在输入到服务器端未获得通行复选框值后选择不相等的搜索操作。我有一个搜索框值和搜索运算符,但我没有得到传递复选框值。
我想在服务器端传递复选框值。请帮助我
答案 0 :(得分:2)
我不确定我是否正确理解了您的问题。如果您使用远程 datatype
(如代码中的datatype: "json"
)并且未使用loadonce: true
选项,则服务器负责返回过滤后的数据服务器获取filters
参数。它是the documentation中描述的格式的JSON格式字符串。如果您以格式实现filters
的解码,则可以使用 jqGrid的任何搜索/过滤功能(高级搜索,过滤工具栏等)。
如果您在根据标准filters
参数实施过滤时遇到问题,则可以自由格式发送有关过滤器的信息,您可以自行定义。有关详细信息,请参阅the answer。如果the demo来自the answer,则会有一个包含ids cb_pending
,cb_processing
和cb_delivered
的复选框。如果您要添加postData
参数,例如以下表格
postData: {
pending: function () { return $("#cb_pending").is(':checked'); },
processing: function () { return $("#cb_processing").is(':checked'); },
delivered: function () { return $("#cb_delivered").is(':checked'); }
}
然后每次都会将pending
,processing
和delivered
参数添加到服务器中。
或者,您可以使用jQuery.serialize或jQuery.serializeArray一次获取一个HTML表单的所有值,而不是按ID分别对每个复选框进行排队。