1

当前要求是单击按钮我通过 ajax 获取 json 数据,其中包含有关表头和数据的信息。我想使用 jqgrid 显示表格数据,因此我正在使用以下代码准备 jqgrid:

$("#fixedId").jqGrid({ 
        datatype: 'clientSide',
        colNames:colName,//from json response
        colModel :colModels,//from json response
                   pager: '',
                   shrinkToFit:true,
                   autowidth:true,
                   rowNum:10,
                   rowList:[10,20,30],
                   emptyrecords: "Empty records",
                   viewrecords: true,
                   width: '100%',
                   height: '100%',
                   altRows:true,
                   scrollOffset: 0,
                   gridview: true,
                   rownumbers:false,
                   multiselect:false,
                   multiboxonly:false,
                   caption: ''         
    }); 

    $("#"+tableId).jqGrid('gridResize', { minWidth: 450, minHeight: 200 });

我正在使用 jqgridaddRowData函数将数据添加到这个新创建的表中。

所以事情第一次运行良好。现在,当我得到一个新的 json 响应来通过 ajax 绘制这个新表详细信息时,我必须删除旧表,所以要删除我尝试过的旧表数据

1) $("#fixedId").remove(); 使用..重新创建表标签

$("#tableParent").append('<table id=fixedId><tr><td /></tr></table>');

然后重新调用以前的代码来创建这个带有新标题和数据的新表,但是这个新的标题,数据表没有在屏幕上绘制。屏幕仍然是空的,我在屏幕上看不到任何表。

2)我试过

$("#gbox_fixedId").remove();

重复步骤 1 以生成新表并添加数据..再次相同的结果..我在屏幕上看不到任何表。

3)我试过了

$("#gbox_fixedId").find(".ui-jqgrid-htable").remove();

此选项有效,但是在重新粉刷新表 3-4 次后,我可以看到每张粉刷过的表看起来都有些变形,并且在重新粉刷一些之后,它变得难以使用该表。

任何解决方案,如如何删除旧的 jqgrid 并创建新的/干净的 jqgrid 以使其工作顺利?

4

2 回答 2

2

在打电话之前,$("#fixedId").jqGrid();我假设你有这个结构:

<div id="tableParent">
    <table id="fixedId"></table>
</div>

然后,如果您在调用 jqGrid 后检查您的 dom,您会注意到fixedId不再是 tableParent 的直接子,因为 jqGrid 将其扭曲到其他元素中,因此要删除您的网格,您需要调用:

$("#tableParent").empty();
于 2012-06-18T10:16:26.623 回答
0

jqGrid 创建一些元素(div)并将您的表格包装在这些 div 中。调用$("#fixedId").remove();不会破坏那些额外的元素。你应该使用

$("#tableParent").children().remove()

这将完全破坏 jqGrid,因此您可以创建一个新的 jqGrid。确保你没有任何其他元素,#tableParent否则它也会消失

于 2012-06-18T10:14:12.473 回答