如何将自定义过滤器参数添加到已经对 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: