jquery.datatables プラグインと FixedColumns アドオンを使用していますが、2 つのテーブルの同期を維持する際に問題が発生しています。
テーブルの最初の 2 行にはチェックボックスが含まれています。
データは ajax で読み込まれるため、チェックボックスの JSON で「true」または「false」の値を返し、「true」または「false」fnRowCallback
を動的に作成して適切なチェックボックスに置き換えます。
次に、FixedColumns アドオンを追加しました。テーブルは最初は正しく読み込まれますが、その後の再描画では「true」または「false」の値がチェックボックスに置き換えられません。
まだfnRowCallback
起動しますが、テーブルの一部とデータの一部しかありません
Note this code is in TypeScript but resembles JS closely enough to understand without knowing it
fnRowCallback: (row : DataTables.Settings, data: any[], displayIndex: number, displayIndexFull: number) : void => {
if($(row).children("td.checkboxColumn").length > 0){
var isFlaggedIdentifier = 'isFlaggedCheckbox_' + displayIndexFull;
var isFlaggedCheckbox = $('<input />', { type: 'checkbox', id: isFlaggedIdentifier, 'class': 'tableCheckboxInput', value: isFlaggedIdentifier });
var isFlaggedLabel = $('<label />', { 'for': isFlaggedIdentifier, 'class': 'tableCheckboxLabel' });
var isFlagged: bool = $(row).children("td").eq(1).text() === "TRUE";
var flaggedCheckboxEntry = $(row).children("td").eq(1);
if(flaggedCheckboxEntry.hasClass("checkboxColumn")){
flaggedCheckboxEntry.html(isFlaggedCheckbox);
flaggedCheckboxEntry.append(isFlaggedLabel);
}
}
}
ドキュメントによると、 FixedColumns にはfnRowCallback
. 描画したテーブルの後に一度だけ起動するものしかfnDrawCallback
ないので、試したことはありませんが、チェックボックスに置き換えられる前に「true」/「false」が点滅するのではないかと心配しています。
この仮定が当てはまる場合、テーブルがレンダリングされる前にチェックボックスを置き換えるにはどうすればよいですか。