DataTableプラグインを使用していくつかのレコードを表示しています。名前、日付、金額の3つの行があります。行の背景色を、金額列の特定の値に基づいて変更したい。
これは私のコードです:
<script type="text/javascript" charset="utf-8">
$(document).ready( function () {
var table = $('#tid_css').DataTable({
'iDisplayLength': 100,
"bFilter": false,
"aaSorting" : [[2, "desc"]]
});
} );
</script>
テストとして、上記のコードと一緒に以下のコードを追加しましたが、「DataTables warning:table id = tid_css-再初期化できませんDataTable "
<script type="text/javascript" charset="utf-8">
$(document).ready( function() {
$('#tid_css').dataTable( {
"fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
if ( aData[2] == "1" )
{
$('td:eq(2)', nRow).html( '<b>1</b>' );
}
}
} );
} );
</script>
「fnRowCallback」を使用して、量が1の場合、色が赤、2 =青、3 =青などのさまざまな条件でこれを簡単に行うことができます。
OKこれを自分で解決できました。
$(document).ready( function () {
$('#tid_css').DataTable({
"iDisplayLength": 100,
"bFilter": false,
"aaSorting" : [[2, "desc"]],
"fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
if ( aData[2] == "5" )
{
$('td', nRow).css('background-color', 'Red');
}
else if ( aData[2] == "4" )
{
$('td', nRow).css('background-color', 'Orange');
}
}
});
})
DataTables 1.10+以降の同等の構文は rowCallback です
_"rowCallback": function( row, data, index ) {
if ( data[2] == "5" )
{
$('td', row).css('background-color', 'Red');
}
else if ( data[2] == "4" )
{
$('td', row).css('background-color', 'Orange');
}
}
_
前の回答の1つはcreatedRow
に言及しています。それはいくつかの条件下で同様の結果を与えるかもしれませんが、それは同じではありません。たとえば、行のデータを更新した後にdraw()
を使用すると、createdRow
は実行されません。一度だけ実行されます。 rowCallback
が再び実行されます。
DataTablesには、v 1.10以降の機能があります
https://datatables.net/reference/option/createdRow
例:
$('#tid_css').DataTable({
// ...
"createdRow": function( row, data, dataIndex ) {
if ( data["column_index"] == "column_value" ) {
$( row ).css( "background-color", "Orange" );
$( row ).addClass( "warning" );
}
},
// ...
});
Datatables v1.10.18以降では、インデックスの代わりに列キーを指定する必要があり、次のようになります。
rowCallback: function(row, data, index){
if(data["column_key"] == "ValueHere"){
$('td', row).css('background-color', 'blue');
}
}
CreatedRow関数を使用して問題を解決しました
$('#result1').DataTable( {
data: data['firstQuery'],
columns: [
{ title: 'Shipping Agent Code' },
{ title: 'City' },
{ title: 'Delivery Zone' },
{ title: 'Total Slots Open ' },
{ title: 'Slots Utilized' },
{ title: 'Utilization %' },
],
"columnDefs": [
{"className": "dt-center", "targets": "_all"}
],
"createdRow": function( row, data, dataIndex){
if( data[5] >= 90 ){
$(row).css('background-color', '#F39B9B');
}
else if( data[5] <= 70 ){
$(row).css('background-color', '#A497E5');
}
else{
$(row).css('background-color', '#9EF395');
}
}
} );
RowCallBack datatableプロパティを使用して、正常に動作しています。 PFB:-
"rowCallback": function (row, data, index) {
if ((data[colmindx] == 'colm_value')) {
$(row).addClass('OwnClassName');
}
else if ((data[colmindx] == 'colm_value')) {
$(row).addClass('OwnClassStyle');
}
}