如何将自定义过滤器参数添加到已经对 beforeRequest 进行过滤的 MvcJqGrid postData?

Posted

技术标签:

【中文标题】如何将自定义过滤器参数添加到已经对 beforeRequest 进行过滤的 MvcJqGrid postData?【英文标题】:how to add custom filter parameter to MvcJqGrid postData which allready has filter on beforeRequest? 【发布时间】:2013-02-15 16:33:59 【问题描述】:

我有一个简单的 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 来过滤参数(事实上,同一页面上有很多网格,它们都需要这个),而不会失去默认的座位功能。我怀疑我需要在.OnBeforeRequest("addSomeOtherID()") 上添加这个功能,但是在里面做什么

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

【问题讨论】:

【参考方案1】:

解决方案很简单。我怀疑 .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);

    

【讨论】:

【参考方案2】:

使用 MvcJqgrid 可以为列设置默认搜索值,此处为示例:

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

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

【讨论】:

【参考方案3】:

这太棒了,我用过它,它很好用。不知道为什么@SpokeST 说它不可用,我没有启用搜索工具栏,它对我有用。

为未来的读者提供了一个修复,请注意代码中的第 4 行使用“2”而不是 fieldValue 参数分配“数据”变量。我猜那是测试的剩菜。

再次感谢!

【讨论】:

tnx 确实是测试留下的 :)

以上是关于如何将自定义过滤器参数添加到已经对 beforeRequest 进行过滤的 MvcJqGrid postData?的主要内容,如果未能解决你的问题,请参考以下文章

如何将自定义授权过滤器添加到ASP网络核心中非控制器的方法?

php 如何将自定义过滤器字段添加到没有过滤器插件的Tribe事件日历(在此示例中 - 按类别和标记过滤)。示例:https:

将自定义元素添加到 ngRepeat 列表

如何将自定义模型添加到 django celery

如何将自定义字段添加到 WooCommerce 注册表单

将自定义结帐字段(用户输入)添加到订单数据和用户元数据