0

我是 jqGrid 的初学者。我为生成网格编写此代码

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 并键入数字,数字 3 char 3 char sperate with ,,我编写函数 addCommas 并且工作良好,但是当用户输入价格并按下搜索按钮时,单价不会发送到服务器。这张图片中的例子

在此处输入图像描述

点击搜索按钮后

在此处输入图像描述

请帮我。谢谢大家

4

1 回答 1

4

在发送到服务器之前,您可以通过多种方式修改搜索过滤器。

首先,我建议您change每次更改输入字段中的数据时都显式调用事件。灼热对话框保持搜索过滤器的内部表示并在更改事件处理程序中对其进行修改。因此,添加$(this).change();$(this).trigger('change')可以解决您当前的一些问题。

顺便说一句,您已经看到有关搜索过滤器的信息将作为filters参数发送到服务器。您可以将其filters作为postData. 要获取对postData参数的引用,您可以使用grid.jqGrid("getGridParam", "postData").

beforeSearch的回调filterToolbar是您可以在发送到服务器之前访问过滤器的地方。onSearch是搜索对话框使用的另一个回调。为了有共同的方式,我建议你使用beforeRequestjqGrid 的回调。在回调内部,您可以postData使用$(this).jqGrid("getGridParam", "postData"),如果有filters属性,您可以修改它。例如,您将在答案中找到修改filters属性的示例。

于 2012-10-13T20:14:21.797 回答