2012-11-19 55 views
0

我用下面的例子上jsbin(來自@奧列格的例子修改的代碼)如何改變濾波器選擇中的jqGrid

http://jsbin.com/owitod/18/edit

我有一個jQuery UI的對話框,顯示工作一個模擬過濾器下拉框的下拉框中的一列和一個按鈕。當按鈕被點擊時,警報對話框顯示當前的jqGrid過濾器。但是,當我在對話框中的下拉列表中更改下拉選擇時,我想要更改jqGrid篩選器。

實施例爲上述演示:

  1. 選擇類別運動
  2. 點擊顯示對話框
  3. 通知運動被預選
  4. 點擊顯示過濾器和通知:

    { 「groupOp」: 「AND」,「rules」:[{「field」:「Category」,「op」:「eq」,「data」:「sport」}]}

  5. 變化在對話框的下拉科學

  6. 此時當我點擊顯示過濾器我想下面被提醒

    {「groupOp」:「和」,「規則」:[{」場 「:」 類別」, 「運」: 「EQ」, 「數據」: 「科學」}]}

我試圖在以下代碼,但它不工作:

$("#gs_Category").val($("#mycat").val()); //this doesn't work... 

alert(jQuery("#list").jqGrid('getGridParam', 'postData').filters); 
+0

你的jsbin例子拋出一個錯誤,不會加載。 – Kyle

+0

對不起。已更新 – birdy

+0

我的回答對你有幫助嗎? – Kyle

回答

0

我認爲你的錯誤e試圖設置選定的選項。 gs_Category是一個選擇下拉菜單。要更改選擇的選項,你試試:

$('#gs_Category').find('option[value="' + $('#mycat').val() + '"]').attr('selected', true); 

UPDATE

添加設置選擇的值將導致電網的過濾器事件後下面的行被觸發(因爲你使用的是本地數據類型)。

$('#gs_Category').trigger('change'); 
+0

以這種方式使用'attr()'不再是首選 - 使用'prop()'代替。見http://api.jquery.com/prop/ –

+0

@ChristopherArmstrong我原來的答案使用'prop'方法(我更喜歡使用它),但是我一直收到一個錯誤,說'.prop'不是函數。我把它切換到'attr',它工作正常。 – Kyle

+0

@ChristopherArmstrong在仔細研究OP的代碼之後,「.prop」的原因將不起作用,他們使用的是1.5。 「.prop」方法直到1.6纔可用。 – Kyle