21

I am using jQuery datatables.I have the data like as follows

Column1 Column2 Column3
-----------------------
 AAA    BBB     CCC
 AAA    GGG     YYY
 BBB    ooo     LLL

Now in column1 for first 2 rows i have same value AAA.I want to apply some color to those rows.And then another color for third row.Like this i have 30 records.Is it possible to do this.If possible how i can do this.I am using jQuery data tables.Thanks in advance..

3 Answers 3

47

Use the fnRowCallback (or newer rowCallback) to achieve this

$('#example').dataTable({
    "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
        switch(aData[0]){
            case 'AAAA':
                $(nRow).css('color', 'red')
                break;
            case 'BBBB':
                $(nRow).css('color', 'green')
                break;
            case 'CCCC':
                $(nRow).css('color', 'blue')
                break;
        }
    }
});

Demo: Fiddle

Sign up to request clarification or add additional context in comments.

3 Comments

@PSR any way there should be some bussiness logic which says what color to be applied for a value
Thanks @ArunPJohny , but I think return nRow is required in this callback function, otherwise, datatable will raise an exception like " a node was not return by fnRowCallBack"
Please consider updating you answer as per @Herve MARTIN answer. The new API access the column data by name.
7

API has recently changed, you should now use aData['Column1'] instead of aData[0]

Comments

3

createdRow functionality was added in v 1.10

This callback is executed when a TR element is created (and all TD child elements have been inserted), or registered if using a DOM source, allowing manipulation of the TR element.

This is particularly useful when using deferred rendering (deferRender) or server-side processing (serverSide) so you can add events, class name information or otherwise format the row when it is created.

https://datatables.net/reference/option/createdRow

Example:

    $('#example').dataTable({
        // ...
        "createdRow": function( row, data, dataIndex ) {
            if ( data["column_index"] == "column_value" ) {
                $( row ).css( "background-color", "Orange" );
                $( row ).addClass( "warning" );
            }
        },
        // ...
    });

1 Comment

this worked for me but I had to specify "column_index" as the column name (string) rather than the index (int).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.