如何添加自定义过滤器参数到mvcjqgridpostdata,它已经在preerequest上有过滤器



我有一个简单的jqgrid

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

我有var SomeOtherID = 2在javascript。当网格加载时,我需要添加这个SomeOtherID来过滤参数(实际上在同一页面上有许多网格,它们都需要这个),而不会失去默认的搜索功能。我怀疑我需要在.OnBeforeRequest("addSomeOtherID()")上添加这个函数,但是在

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

解决方法很简单。正如我所怀疑的那样。onbeforerequest ("addSomeOtherID(grid)")做到了。

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);
    }
}

使用MvcJqgrid可以设置列的默认搜索值,示例如下:

http://playground.webpirates.nl/MvcJqGrid/Home/DefaultSearchValue

如果你看一下这个页面的源代码,你可以看到它是如何做到的。

这是伟大的,我使用它,它的工作原理。不知道为什么@SpokeST说它不可用,我没有启用搜索工具栏,它为我工作。

为将来的读者提供一个修复,注意代码中的第4行将'data'变量赋值为"2"而不是fieldValue参数。我猜这是测试的结果。

再次感谢!

最新更新