2013-03-01 56 views
1

我有一個簡單的jqGrid如何將自定義過濾器參數添加到MvcJqGrid postData,它已經在beforeRequest上過濾了?

@(Html.Grid("something") 
    .SetCaption("") 
    .AddColumn(new Column("ID").SetHidden(true)) 
    .AddColumn(new Column("Name").SetLabel("Name").SetSearch(true)) 
    .SetUrl(Url.Action(something)) 
) 

我在JavaScript有var SomeOtherID = 2。 我需要添加此SomeOtherID過濾網格加載時的參數(實際上有許多網格在同一頁面上,他們都需要這個),而不會失去默認的seatch功能。我懷疑我需要添加此功能上.OnBeforeRequest("addSomeOtherID()")但做內部

function addSomeOtherID(grid) 
{ 
var pd = grid.getGridParams("postData"); 
?????? here I need to add SomeOtherID to postData filters 
grid.setGridParams({postData: pd}); 
} 

回答

2

解決方案很簡單。正如我懷疑.OnBeforeRequest(「addSomeOtherID(網格)」)做到了。

function addGridSearchOption(grid, fieldName, fieldValue) {   
    if (grid[0].p.search == false) { 
     f = { groupOp: "OR", rules: [] }; 
     f.rules.push({ field: fieldName, op: "cn", data: fieldValue }); 
     grid[0].p.search = true; 
     $.extend(grid[0].p.postData, { filters: JSON.stringify(f) }); 
    } 
    else { 
     tFilters = eval('(' + grid[0].p.postData.filters + ')'); 
     var bAddRule = true; 
     var i = 0; 
     for (var tRule in tFilters.rules) 
     { 
      if (tFilters.rules[i].field == fieldName) 
      { 
       tFilters.rules[i].data = fieldValue; 
       bAddRule = false; 
      } 
      i++; 
     } 
     if (bAddRule) { 
      tFilters.rules.push({ field: fieldName, op: "cn", data: fieldValue }); 
     }grid[0].p.postData.filters = JSON.stringify(tFilters); 

    } 
} 
0

這很好,我用它,它的工作原理。不知道爲什麼@SpokeST說它不可用,我沒有啓用搜索工具欄,它適用於我。

一個修復以供將來的讀者,在代碼受讓人「數據」與「2」,而不是fieldValue方法PARAM可變通知線4。我想這是從測試它的剩菜。

再次感謝!

+0

tnx確實是從測試:) – SpoksST 2013-05-03 10:13:02

相關問題