0

I am using jqgrid with multiplegroup option true for search. My filter looks like the following:

{"groupOp":"OR",
"rules":[{"field":"Total_case","op":"eq","data":"29"}],
"groups":[{"groupOp":"AND",
"rules":[{"field":"Total_case","op":"eq","data":"2"},{"field":"percent","op":"eq","data":"100"}],
"groups":[]}]}

I have rows with both total case = 2 ,percent = 100 and total case = 29. Since outer condition is "OR" condition, I am expecting two rows. However it displays no record. What is wrong?

4

1 に答える 1

0

質問は、前の質問への回答と重複しているようです。jqGridの現在のバージョンのバグであることを確認した、元の質問に対する回答を書きました。"groupOp":"OR"回避策として、空でないパーツと両方rulesを含むリクエストを変更groupsし、rulesパーツがの中に新しい追加グループとして挿入されるようにすることを提案しましたgroups

投稿した例では、最初にjQuery.parseJSONを使用して、投稿したJSON文字列postData.filtersをオブジェクトフォームに変換できます。

{
    groupOp: "OR",
    rules: [
        {field: "Total_case", op: "eq", data: "29"}
    ],
    groups: [
        {
            groupOp: "AND",
            rules: [
                {field: "Total_case", op: "eq", data: "2"},
                {field: "percent", op: "eq", data: "100"}
            ],
            groups: []
        }
    ]
}

groupOp次に、それが「OR」であり、両方rulesgroups空でない配列であるかどうかをテストできます。rulesこの場合、パーツを。の内側に移動できgroupsます。言い換えれば、それを次のオブジェクトに変換することができます

{
    groupOp: "OR",
    rules: [],
    groups: [
        {
            groupOp: "AND",
            rules: [
                {field: "Total_case", op: "eq", data: "2"},
                {field: "percent", op: "eq", data: "100"}
            ],
            groups: []
        }
        {
            groupOp: "AND",
            rules: [
                {field: "Total_case", op: "eq", data: "29"}
            ],
            groups: []
        }
    ]
}

最後JSON.stringifyに、オブジェクトをJSON文字列に変換し直して、結果をに割り当てることができますpostData.filters

更新:フィルタリング/検索リクエストの処理中にjqGridを内部的に実行する変更を説明するプルリクエストを投稿しました。

デモでは修正が使用されており、すべてが正しく機能しているようです。

于 2013-01-25T11:35:10.553 に答える