我是jqGrid的首发。我为Genereate Grid编写了这段代码
grid.jqGrid({
url: 'jQGridHandler.ashx',
postData: { ActionPage: 'Report5',type:'Fill' },
datatype: 'json',
height: 530,
colNames: ['id','UnitPrice'],
colModel: [
{ name: 'Id', sortable: true, search: true, editable: false, hidden: true,
key: true },
{ name: 'UnitPrice', shrinkToFit: true, width: 50,
searchoptions: {
sopt: ['eq', 'ne', , 'le', 'ge'],
dataInit: function (elem) {
$(elem).keyup(function () {
var str = $(this).val();
str = str.replace( /,/g, "" );
$(this).val(addCommas(str));
});
}
}}
],
gridview: true,
search: true,
rowNum: 100,
rowList: [100, 200, 300],
pager: '#pager',
viewrecords: true,
rownumbers: true,
footerrow: true, userDataOnFooter: true, altRows: true,
});
grid.jqGrid('navGrid', '#pager', { add: false, edit: false, del: false, search: true },
{},
{},
{},
{ multipleSearch: true });
grid.jqGrid('filterToolbar', { defaultSearch: 'cn', stringResult: true });
function addCommas(nStr) {
nStr += '';
var x = nStr.split('.');
var x1 = x[0];
var x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
}
我希望用户在搜索框中选择unitPrice和type number,number 3 char 3 char sperate with ,
,我写函数addCommas并且工作正常,当用户输入价格时按住,按下搜索按钮单价不发送到服务器。
这张照片中的例子
并点击搜索按钮后
请帮帮我。谢谢所有
答案 0 :(得分:4)
在发送到服务器之前,有很多方法可以修改搜索过滤器。
首先,我建议您在每次更改输入字段中的数据时显式调用change
事件。 Searing Dialog保持搜索过滤器的内部表示,并在change事件处理程序中对其进行修改。因此,添加$(this).change();
或$(this).trigger('change')
可以解决您当前遇到的一些问题。
顺便提一下,您已经看到有关搜索过滤器的信息将作为filters
参数发送到服务器。您可以将其作为filters
的{{1}}属性获取。要获得对postData
参数的引用,您可以使用postData
。
grid.jqGrid("getGridParam", "postData")
的回调beforeSearch是您可以在发送到服务器之前访问过滤器的地方。 onSearch是搜索对话框使用的另一个回调。为了有共同的方法,我建议你使用jqGrid的filterToolbar
回调。在回调内部,您可以使用beforeRequest
获取postData
,如果拥有$(this).jqGrid("getGridParam", "postData")
属性,则可以修改它。您可以在the answer中找到修改filters
属性的示例。