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関数を使用して、この新しく作成されたテーブルにデータを追加しています。

そのため、初めて問題なく動作しています。この新しいテーブルの詳細をajax経由で描画するための新しいjson応答を取得すると、古いテーブルを削除する必要があるため、試した古いテーブルデータを削除します

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 に答える