2レベルの行グループ化を持つjqueryデータテーブルがあります。私はテーブル内の何かを検索する場合、データを正しく検索しますが、すべてのグループを削除したり、検索したすべてのデータを1つのグループにマージします。行グループ化のデータ型を使用する場合の検索での問題
私はインターネット上で見つけたもののほとんどを試しましたが、どれも役に立たなかった。
これは私のコードです:
drawCallback: function (settings) {
var api = this.api();
var rows = api.rows({page:'all'}).nodes();
var last = null;
var sublast = null;
var grupo;
var total = null;
var subtotal = null;
var a_origen = null;
var intVal = function (i) {
return typeof i === 'string' ? i.replace(/[\$,]/g, '_')*1 :
typeof i === 'number' ? i : 0;
};
api.column(0, {}).data().each(function (ctra, i) {
ctra_assoc = ctra.substring(0, 6);
if (last !== ctra) {
$(rows).eq(i).before(
'<tr class="group" height= "50px"><td colspan="5">'+ctra.toUpperCase()+'</td><td colspan="2" class="'+ctra_assoc+'"></td></tr>'
);
total = intVal(api.column(8).data()[i]);
last = ctra;
} else {
total += intVal(api.column(8).data()[i]);
}
$("."+ctra_assoc).html(total.toFixed(2));
a_origen += intVal(api.column(8).data()[i]);
grupo = api.column(1).data()[i];
grupo_assoc = grupo.replace(/\s/g, "_");
if (sublast !== grupo) {
$(rows).eq(i).before(
'<tr class="subgroup" height= "50px"><td colspan="5">'+grupo+'</td><td colspan="2" class="'+ctra_assoc+'_'+grupo_assoc+'"></td></tr>'
);
subtotal = intVal(api.column(8).data()[i]);
sublast = grupo;
} else {
subtotal += intVal(api.column(8).data()[i]);
};
$("."+ctra_assoc+'_'+grupo_assoc).html(subtotal.toFixed(2));
});
$(".panel-title").html('Listado de operaciones ejecutadas | Total a origen: '+a_origen.toFixed(2)+' €');
https://jsfiddle.net/mvwf3qwm/3/
I'veには、例えば、いくつかのケースで試してみました:
を私は、コード12512を検索する場合、結果はOKです。
コード12411を検索すると、「第1レベルのグループ化」が失われます。
コード22314を検索すると、すべてのグループが失われます。
グループという名前の行から区切られた行を要求すると、失敗するようです。
私のコードに間違いはありますか?
はどうもありがとうございました。あなたの説明は隠れたグループの問題を解決しますが、別の問題があります。 '22314'でフィルタリングすると 'Grupo II'から 'Grupo I'に変更されます。 –
明らかに、親グループがレンダリングしようとしているときに 'api.column'を取得し、' sublast = null'をリセットすると、すべての場所で '{page:current}'を適用する必要があります。 こちらをご確認ください。https://jsfiddle.net/mvwf3qwm/6/ – yvoytovych
パーフェクト。それは私が探していたように動作します。あなたの興味に感謝します! –