我有一个带有iFrame的网页。它使用jqGrid表加载网页(相同的域)。我现在要做的是:
search
的链接,会打开一个带有过滤器表单的对话框,以过滤您的搜索。search
按钮时,它会更改jqGrid网址参数,它应该.trigger('reloadGrid')
。它除了reloadGrid
之外都做了,我不知道为什么。
有什么建议吗?
代码:
// DIALOG-ACTION-SEARCH IS THE BUTTON CLASS
$('#dialog').find('.dialog-action-search').button({icons: {
primary: 'ui-icon-search'
}, text: true}).click(function(e) {
e.preventDefault();
$('.content-center').contents().find('#list').setGridParam({
url: 'filteredsearch.html?option=1'
}).trigger('reloadGrid');
$('#dialog').dialog('destroy');
$('#dialog').remove();
});
答案 0 :(得分:0)
我发现在使用JSON数据调用trigger('reloadGrid')
之前,您应该重置datatype
参数。
$("#grid").jqGrid('setGridParam', { datatype: 'json' });
在回复您的评论时,我会拆分链接的方法调用,然后在Chrome调试器的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
实际上正在返回你想要的元素?
答案 1 :(得分:0)
setGridParam
会返回jqGrid
个对象,而不是jQuery
个对象,因此我很确定您无法链接trigger
方法。试试这个:
var list = $('.content-center').contents().find('#list')
list.setGridParam({
url: 'filteredsearch.html?option=1'
})
list.trigger('reloadGrid');
答案 2 :(得分:0)
我遇到了同样的问题。我没有时间调查它为什么会发生,但找到了解决方法。 在jrame文件中,在我的网格中加载iframe,我声明了
window.top.reloadEventList = function () {
$("#grid").trigger("reloadGrid");};
然后致电
window.top.reloadEventList()
而不是
list.trigger('reloadGrid')