2013-03-01 57 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

相关问题