0

私はjqGridのスターターです。GenereateGrid用にこのコードを書きます

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文字3文字を入力して,、関数addCommasを記述して正常に動作しますが、ユーザーが価格を入力して検索ボタンを押すと、単価はサーバーに送信されません。この写真の例

ここに画像の説明を入力してください

検索ボタンをクリックした後

ここに画像の説明を入力してください

私を助けてください。皆さんありがとう

4

1 に答える 1

4

サーバーに送信する前に検索フィルターを変更する方法はたくさんあります。

まずchange、入力フィールドのデータを変更するたびに、イベントを明示的に呼び出すことをお勧めします。Searing Dialogは、検索フィルターの内部表現を保持し、変更イベントハンドラーで変更します。したがって、現在の問題のいくつかを追加する$(this).change();$(this).trigger('change')、修正することができます。

ちなみに、検索フィルターに関する情報がfiltersパラメーターとしてサーバーに送信されることを確認しました。filtersのプロパティとして取得できますpostData。パラメータへの参照を取得するには、をpostData使用できますgrid.jqGrid("getGridParam", "postData")

コールバックbeforeSearchoffilterToolbar、サーバーに送信する前にフィルターにアクセスできる1つの場所です。onSearchは、検索ダイアログで使用されるもう1つのコールバックです。beforeRequest一般的な方法として、jqGridのコールバックを使用することをお勧めします。コールバック内でpostData使用でき、プロパティがある場合は変更できます$(this).jqGrid("getGridParam", "postData")たとえば、回答にあるプロパティfiltersの変更の例。filters

于 2012-10-13T20:14:21.797 に答える