亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

jqGrid:使用beforeProcessing填充filterToolbar選擇框

jqGrid:使用beforeProcessing填充filterToolbar選擇框

catspeake 2019-10-22 22:15:10
我用來自服務器的數據填充filterToolbar中的三個下拉框,如下面的prodValues,envValues和typeValues的聲明所示。我想更改代碼以在beforeProcessing事件中執行此操作,并從主網格數據轉儲中提取值。我已經有服務器發送我認為是正確的json響應來執行此操作:{   "pVals":"Product1:Product1;Product2:Product2;etc:etc",   "eVals":"??:??;Dev:Dev;PreProd:PreProd;Prod:Prod;Test/QA:Test/QA",   "tVals":"??:??;App:App;Service:Service;SQL:SQL;Web:Web",   "page":0,   "total":0,   "records":537,   "rows":[ /* many rows */    ]}如何在beforeProcessing事件中挑選pVal,eVal和tVals字符串并將其粘貼到相應的filterToolbar選擇框中?
查看完整描述

3 回答

?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

在我看來,您已經使用了幾乎正確的代碼。最大的問題是您需要刷新現有的過濾器工具欄。您可以使用destroyFilterToolbar我在答案中建議的方法。稍后我向trirand提出了建議(請參閱此處和pull request),現在它已包含在jqGrid的主要代碼中。您的代碼如下所示。


beforeProcessing: function (data) {

    var $self = $(this),

        newProductValues = data.pVals,

        newEnvironmentValues = data.eVals,

        newTypeValues = data.tVals,

        cmProduct = $self.jqGrid("getColProp, "Product"),

        cmEnvironment = $self.jqGrid("getColProp, "Environment"),

        cmType = $self.jqGrid("getColProp", "Type"),

        isChanged = false;


    if (cmProduct.editoptions.value !== newProductValues) {

        $self.jqGrid("setColProp", "Product", {

            searchoptions: { value: ":All;" + newProductValues },

            editoptions: { value: newProductValues }

        });

        isChanged = true;

    }

    if (cmEnvironment.editoptions.value !== newEnvironmentValues) {

        $self.jqGrid("setColProp", "Environment", {

            searchoptions: { value: ":All;" + newEnvironmentValues },

            editoptions: { value: newEnvironmentValues }

        });

        isChanged = true;

    }

    if (cmType.editoptions.value !== newTypeValues) {

        $self.jqGrid("setColProp", "Environment", {

            searchoptions: { value: ":All;" + newTypeValues },

            editoptions: { value: newTypeValues }

        });

        isChanged = true;

    }

    if (isChanged) {

        // recreate filter toolbar to refresh the data

        $self.jqGrid("destroyFilterToolbar");

        $self.jqGrid("filterToolbar", {

            stringResult: true,

            searchOnEnter: true,

            searchOperators: true,

            defaultSearch: "cn"

        });

    }

}

(我加入了searchOperators: true可能引人入勝的新選項)


您可以將解決方案與refreshSerchingToolbar我在答案中描述的函數調用結合使用,以將舊過濾器加載到過濾器工具欄中。


順便說一句,您可以考慮更改value使用的屬性的格式。除了使用字符串形式,"Product1:Product1;Product2:Product2;etc:etc"還可以使用對象形式{Product1: "Product1", Product2:"Product2", etc: "etc"}。


查看完整回答
反對 回復 2019-10-22
?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

不客氣!我沒有測試代碼-我只是在編寫答案時編寫了代碼。因此它可能包含一些小錯誤。通常,cmXX["editoptions"]它與cmXX.editoptionsJavaScript中的相同,并且最好使用最后一種形式。無論如何,我都希望您可以配置您的代碼,使其現在可以工作。這是主要目標。 

查看完整回答
反對 回復 2019-10-22
  • 3 回答
  • 0 關注
  • 1258 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號