如何将自定义过滤器参数添加到Mvc JqGrid post已经在beforeRequest上过滤的数据?

时间:2013-03-01 08:13:13

标签: javascript jqgrid mvcgrid mvcjqgrid

我有一个简单的jqgrid

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

3 个答案:

答案 0 :(得分:2)

解决方案很简单。正如我所怀疑的那样.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);

    }
}

答案 1 :(得分:0)

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

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

如果您查看页面的来源,就可以看到它是如何完成的。

答案 2 :(得分:0)

这很棒,我用它并且它有效。不知道为什么@SpokeST说它不可用,我没有启用搜索工具栏,它对我有用。

未来读者的一个解决方案,代码中的第4行将“data”变量分配为“2”而不是fieldValue param。我想这是剩下的测试它..

再次感谢!