1

I have a tables that I am trying to sort, the problem is that when I add locales to the numbers, it breaks sorting, it sorts as it were strings.

I followed this answer and I modified without having to use regex, but then it begins sorting as it were strings and no longer numbers, for instance

1
1.200
2
$(document).ready(function () {
    $('.my_table').DataTable({
        "bProcessing": true,
        "bPaginate": true,
        "bDestroy": true,
        "bShowPollInfo": false,
        "iDisplayLength": 20,
        "aLengthMenu": [[20, 40, -1], [20, 40, "_all"]],
        "sScrollX": "100%",
        "aoColumns": [
            { "sWidth": "160px", "sClass": "nowrap" },
        ],
        "aoColumnDefs": [
            {
               "mRender": function (data, type, row) {
                   return formatNumbers(data);
               },
               "aTargets": [1, 2]
            },
        ],
    });
});
function formatNumbers(val) {
    return parseInt(val).toLocaleString("de-DE");
}
3
  • Your formatNumbers() function explicitly returns a string; what did you expect to happen? Also, if you really have numbers with fractional parts, you should not be using parseInt() on the values. (If they start out as numbers, then you don't need to "parse" them at all anyway.) Commented Feb 2, 2022 at 16:28
  • Is there any way to add locale without breaking the sort? Commented Feb 2, 2022 at 16:32
  • 1
    columns.render can do this. Commented Feb 2, 2022 at 17:01

1 Answer 1

1

Change the "aoColumnDefs" part to this

"aoColumnDefs": [
    {
       "mRender": function (data, type, row) {
            if( type === 'display' ){
                return formatNumbers(data); // only format the data for display
            }else{
                return data; // the default data should be used for sorting
            }
       },
       "aTargets": [1, 2]
    },
],
Sign up to request clarification or add additional context in comments.

Comments

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.