我看到两种不同的行为而不确定原因。部分问题是从其他问答实施的测试解决方案的结果。甲
汇总网格创建(我只包括与问题相关的属性)......
网格设置1
url: jqDataUrl,
datatype: "json",
mtype: "GET",
//loadonce: true
// Default sorting
sortname: typeof prefs.sortCol !== "undefined" ? prefs.sortCol : "LastName",
sortorder: typeof prefs.sortCol !== "undefined" ? prefs.sortOrd : "asc",
sorttype: "text",
sortable: true,
postData: { filters: JSON.stringify({ "groupOp": "AND", "rules": [{ "field": "FirstName", "op": "cn", "data": "max" }]})},
search: true,
结果1 ,搜索:true
当上面的网格首次加载时,它会加载来自postdata过滤器的过滤结果。如果我去编辑结果行的url并返回,则网格中的记录不会更新,即使上面的页面/网格从头开始从服务器重新加载。
网格设置2
//same as above but
search: false
结果2 ,搜索:false
此时网格加载时,未应用过滤器。如果我去编辑行的url并返回,则记录会更新。
我已经阅读了很多关于设置loadonce的帖子:true,并且将数据类型从local更改为json,将json更改为local以进行刷新,但我想要的是网格始终从服务器加载,排序和过滤数据。
虽然我明白免费的jqGrid做得更好,但不幸的是,我无法替换当前的jqGrid.js文件。
我的问题是两部分:
1)我没有在wiki here上看到搜索作为一个选项,所以在哪里定义。
2)可以以及如何在加载时应用postdata过滤器并在编辑后在网格上更新我的记录?
答案 0 :(得分:0)
回答我自己的问题:
1)search:true将在http请求中发送_search == true。
2)在http请求中发送了postdata过滤器(也就是查询数据时的where子句),但是,我的控制器正在执行基于搜索的不同操作:从http请求解析的值(也就是_search)。
在我的控制器内部,我根据_search值设置了另一个属性,然后使用控制器的属性来确定是否刷新网格数据或使用会话。它正在使用会话,因此在编辑后没有更新我的过滤结果。
我发现的另一个问题是,如果我有搜索:true并手动将postdata过滤器重置为{},我的控制器在尝试使用null设置linq时出现错误(没有抛出没有尝试/捕获) ,退出网格设置并且不显示任何内容。