JQGRID:触发重新加载不在iFrame上工作

时间:2013-05-29 14:24:15

标签: javascript jquery jqgrid

我有一个带有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();
});

3 个答案:

答案 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')