实现依赖的jqGrid

时间:2014-03-20 05:42:41

标签: javascript jquery jqgrid

我创建了一个jqGrid,并且我有一个超链接的列,点击后,数据被提取并在父网格下面创建一个新的jqGrid。

我的问题是,当我点击父网格的任何链接时,子网格已成功创建。但之后如果我点击任何其他链接,子网格显示相同的数据。

问题是网格没有使用新数据刷新。

我也试过jQuery('grid1').trigger('reloadGrid') 但这也没有任何改变。

修改 * 以下是在父网格中调用onClick元素的代码: *

var dynaData2   =   getDataForWelfareStatusDetails(memberId);
           jQuery('#grid1').jqGrid({
            datatype: 'local',
            data: dynaData2,
            colNames:['Effective Date ','Welfare Status ', 'State', 'IV-A/IV-E Case ID', 'Receipt No.','Case Type'],
            colMandReq:['-1','-1','-1','-1'],
            colModel: [
                   { name: 'effectiveDate',index:'effectiveDate', align:"center", editable:false,readonly:true,hidden:false, sortable:false, search: false},
                   { name: 'welfareStatus', index:'welfareStatus', align:"center", editable:false,readonly:true,hidden:false, sortable:false, search: false},
                   { name: 'stateCode', index:'stateCode', align:"center", editable:false,readonly:true,hidden:false, sortable:false, search: false},
                   { name: 'refCaseId', index:'refCaseId', align:"center", editable:false,readonly:true,hidden:false, sortable:false, search: false,formatter: returnCaseLink},
                   { name: 'receiptNum', index:'receiptNum', align:"center", editable:false,readonly:true,hidden:false, sortable:false, search: false},
                   { name: 'caseType', index:'caseType', align:"center", editable:false,readonly:true,hidden:false, sortable:false, search: false}

                   ],
            loadComplete: function() 
                {
                    jQuery('#grid1').trigger('reloadGrid');             
                },
            pager: '#pager1',
            gridview: true,
            rownumbers: false,
            autoencode: true,
            shrinkToFit: true,
            autowidth: true,
            sortable: false,
            height: '100%',
            rowNum: 100,
            caption:""
            });

欢迎并赞赏任何意见

2 个答案:

答案 0 :(得分:6)

试试这个,

jQuery("#grid1")
    .jqGrid('setGridParam',
        { 
            datatype: 'local',
            data:dynaData2
        })
    .trigger("reloadGrid");

或者你可以试试,

jQuery('#grid1').jqGrid("GridUnload");

DOCUMENTATION

答案 1 :(得分:1)

首先关于您的主要问题:为什么网格没有使用新数据刷新?原因是:您尝试多次创建网格#grid1。这是错的。在jQuery('#grid1').jqGrid({...});的第一次调用期间,初始空<table id="grid1"></table>将转换为相对复杂的div和表结构。第二次尝试从结构中创建网格将只是忽略并且您不会看到网格的刷新。

您可以通过多种方式修复代码。如果你包含jQuery('#grid1').jqGrid("GridUnload");,那么最小的代码,但不是最好的代码。

您应该以{{1​​}}的{​​{1}}移除jQuery('#grid1').trigger('reloadGrid');。回调loadComplete将在加载或重新加载网格时处理。所以你可以进行递归。

另一种可能性是分离网格的初始创建和网格内容的后续刷新。使用代码jQuery('#grid1'),您可以创建网格。刷新您需要的数据1)删除网格的旧数据2)例如设置loadComplete的新数据,然后3)重新加载jQuery('#grid1').jqGrid({...});的网格。

您没有发布setGridParam部分内容。我建议您使用the answer(或this one)中描述的方法,该方法使用trigger("reloadGrid")回调而不是设置多个onClick句柄。