Javascript JQGRID:触发器重新加载在iFrame上不起作用
我有一个带有iFrame的网页。它加载带有jqGrid表的网页(同一域)。我现在想做的是:Javascript JQGRID:触发器重新加载在iFrame上不起作用,javascript,jquery,jqgrid,Javascript,Jquery,Jqgrid,我有一个带有iFrame的网页。它加载带有jqGrid表的网页(同一域)。我现在想做的是: 您按下一个名为search的链接,它会打开一个带有筛选表单的对话框来筛选您的搜索 当您按下对话框内的search按钮时,它会更改jqGrid url参数,并应.trigger('reloadGrid') 除了重新加载网格之外,它可以做所有的事情,我不知道为什么 有什么建议吗 代码: 我发现在使用JSON数据调用trigger('reloadGrid')之前,应该重置datatype参数 $("#gri
- 您按下一个名为
的链接,它会打开一个带有筛选表单的对话框来筛选您的搜索search
- 当您按下对话框内的
按钮时,它会更改jqGrid url参数,并应search
.trigger('reloadGrid')
我发现在使用JSON数据调用
trigger('reloadGrid')
之前,应该重置datatype
参数
$("#grid").jqGrid('setGridParam', { datatype: 'json' });
为了回应您的评论,我将拆分链式方法调用,然后在Chrome debugger中的e.preventDefault()
上设置一个断点,这样您就可以确保所有内容都被命中
$('#dialog').find('.dialog-action-search').button(
{
icons: { primary: 'ui-icon-search' } ,
text: true
});
$('#dialog').find('.dialog-action-search').click(function(e) {
e.preventDefault();
var grid = $('.content-center').contents().find('#list');
$(grid).jqGrid('setGridParam', { url: 'filteredsearch.html?option=1' });
$(grid).jqGrid('setGridParam', { datatype: 'json' });
$(grid).trigger('reloadGrid');
$("#dialog").dialog('destroy');
$("#dialog").remove();
});
虽然我是链接的爱好者,但在这种情况下,我认为如果不更明确地做一些事情,就无法找到问题的根源,尤其是在使用
.find
时。你怎么知道.find
实际返回的是你想要的元素呢?setGridParam
返回的是jqGrid
对象,而不是jQuery
对象,所以我很确定你不能链接触发器
方法。请尝试以下方法:
var list = $('.content-center').contents().find('#list')
list.setGridParam({
url: 'filteredsearch.html?option=1'
})
list.trigger('reloadGrid');
我也遇到了同样的问题。我没有时间调查它为什么会发生,但找到了解决办法。 在一个javascript文件中,该文件在iframe中加载我声明的网格
window.top.reloadEventList = function () {
$("#grid").trigger("reloadGrid");};
那就打电话吧
window.top.reloadEventList()
而不是
list.trigger('reloadGrid')
在网格的初始设置中,您的
数据类型设置为什么?json
,问题是我没有得到任何错误。就像从来没有重新加载过一样,好像因为某种原因无法重新加载。它更改了url
,因为我在jqGrid的navGrid
上按下了刷新按钮,它抛出了一个错误,因为url不存在。此外,请尝试使用存在且未接收任何数据的url
。按下刷新按钮时,我的jqGrid变为空,但仍不会触发重新加载网格。请参阅我的答案。如果这不起作用,你有没有摆弄过它,看看它是否真的打过电话?谢谢你的回答,但我已经试过了,但它不起作用:我试过了,但仍然不起作用:新的url设置好了,一切都设置好了,因为我按下刷新按钮时已经用Chrome检查过了,它向新的url发送请求以检索数据。那么您可以看到它发送请求了吗?Chrome调试器中是否存在Javascript错误?更好的是,您是否使用Fiddler跟踪请求和响应?当我按下navGrid
上的refresh
按钮时,它会发送请求。它没有像使用.trigger('reloadGrid')时那样自动执行代码>。那么,这个方法永远不会被执行,我不知道为什么。它没有在Chrome调试器中给出Javascript错误,我也没有上传提琴来展示一个示例,因为我不知道它是否能与iFrame一起正常工作。我还尝试删除对列表的所有访问,并且仅使用$('.content center').contents().find('#list').trigger('reloadGrid')代码>而且它也不起作用。从未使用过它,但我告诉过你它不起作用。Chrome不会在网络选项卡上显示任何请求。另外,当我加载页面时,网格中充满了一些数据,但是当你尝试过滤时,它应该显示空网格,因为我没有在服务器端实现过滤器,只有当我按下jqGridnavGrid
的刷新按钮时,它才会触发reloadGrid
。
list.trigger('reloadGrid')