jqGrid-自定义过滤有效,但在模式窗口中重新打开网格后无效
jqGrid - Custom filtering works but not after reopening a grid in a modal window
我有一个自定义过滤功能,它通过传递自定义url并重新加载网格数据
function filter_grid(filter) {
grid = $(filter).parents('.ui-jqgrid-view').find('.grid');
/* build the url in here*/
$(grid).setGridParam({loadonce:false, datatype:'json'});
jQuery(grid).setGridParam({url:myurl}).trigger("reloadGrid");
$(grid).setGridParam({loadonce:true});
}
这可以很好地工作,并按预期过滤数据。然而,我允许用户在模式窗口中打开网格,这在您第一次打开模式窗口时也会起作用,但如果您关闭窗口并重新打开它…过滤失败。我在控制台中没有看到错误。。。只是重新加载似乎从未发生过。有什么建议吗?
澄清
简而言之,每个网格都附有一个选择菜单。您可以在该菜单中选择一个选项,它将通过filter_grid
功能用过滤后的数据重新加载网格。它通过用一个新的url重新加载网格来重新加载,这个url传递一些参数来过滤数据。
在gridComplete事件中,我将一个select输入元素(稍后填充)附加到页面上的每个网格。每个都有一类"过滤器":
$("#grid1 .ui-jqgrid-titlebar:eq(1)").append("<select id='pdd_user' name='filter_user' class='category_select filter'><option value=''>All</option></select>")
我观察点击过滤器类:
$('.filter').live('change', function() {
filter_grid(this);
});
正如你所看到的,这调用了filter_grid
函数(我在上面第一次编辑问题时包含的函数),这就是用过滤后的数据重新填充网格的方法:
jQuery(grid).setGridParam({url:myurl}).trigger("reloadGrid");
我将其设置为loadonce:false,因为网格在最初创建时(出于本地排序目的)被设置为loadonce:true,所以我将其重新设置为loadonece:false,用新的url和params重新加载网格,然后将其设置回loadonce:true,以便再次启用本地排序。
我不完全理解你的问题,但我希望我能帮助你找出代码中的错误。我认为您应该删除对jqGrid的loadonce
选项的任何操作。这是不必要的,也是危险的。要使用服务器数据重新加载网格,只需将datatype
设置为'json'
,然后使用.trigger("reloadGrid", [{page: 1, current: true}]);
重新加载网格(有关详细信息,请参阅此处)。参数current: true
有助于在重新加载后在网格中找到所选行时保持该行。如果使用数据分页,参数page: 1
可以提供帮助。例如,如果用户选择了第二个页面,然后reloadGrid
将启动,它将请求服务器也加载过滤结果的第二个页。因此,在寻呼机中可以有空的网格和页码2。对于setGridParam
或reloadGrid
的上述参数,将页码重置为1在这种情况下会有所帮助。
设置loadonce: false
的问题可能是,如果在设置loadonce: true
之前处理网格的重新加载。在这种情况下,网格中不会填充任何本地数据。因此,应永久设置选项loadonce: true
。
如果您使用带有本地数据排序的服务器端分页,我还建议您阅读此答案。
- Jquery Onclick将数据发送到新打开的窗口
- 如何重定向页面并在新打开的页面上突出显示某些文本
- 新打开的选项卡会终止函数调用
- 将脚本执行保留在新打开的页面中
- 是否可以将新打开的窗口移动到另一个显示器
- 如何在新打开的窗口中设置文本框值
- Safari 8 中新打开的对话框的高度不正确
- 如何为重定向或其他服务器上新打开的页面设置超时
- Javascript:在新打开的窗口中找不到函数
- 如何从原始选项卡中获取新打开的浏览器选项卡名称
- 点开的窗口隐藏了新打开的窗口的一半
- 如何通过javaScript获取新打开选项卡的URL
- Zombie.js/Pantom.js可以通过window.open获取新打开的窗口的HTML吗
- 在新打开的页面上使用ScrollTo()
- JQuery-在一个新打开的窗口中加载多个页面
- jqGrid-自定义过滤有效,但在模式窗口中重新打开网格后无效
- 如何在新打开的窗口中调试JS
- 如何为新打开的窗口设置ID
- 如何在新打开的窗口中运行Javascript
- .animate()在页面未新打开或未刷新时不触发