Функция jQuery-Datatables-parseFloat Глобализация - PullRequest
0 голосов
/ 17 мая 2018

Я использую jQuery datatable для отображения процентов в десятичных значениях, таких как

28.33 91.58 0.65

Я использую parseFloat этих значенийсортировать их.Проблема возникает во время интернационализации, на французском, немецком эти значения представлены как

28,33 91,58 0,65

Функции parseFloat игнорируют и отображают только числовую часть.Таким образом, 28,33 отображается как 28, а 91,58 отображается как 91 и т. Д. Мне нужно сохранить запятую, а также сортировать таблицу.Если я уберу парсефлоат, это не сортировка.Если я заменю, с.это работает, но мне нужно будет запятую.Было бы полезно, если бы кто-нибудь предложил мне обходной путь для этого.

Фрагмент кода

    $.ajax({
                dataType : "json",
                url : myURL,
                data : aoData,
                cache : false,
                success : function(json) {
                     var settings = {
                         tableSelector: getTableSelector(tab),
                         tableContainer : tab,
                         aaData : json.aaData,
                         iDisplayLength: 10,
                         bProcessing: false,
                         oLanguage : {
                            sEmptyTable: json.emptyTableMessage,
                            oPaginate: DataTablesUtils.getPaginationControls()
                        },
                         fnPreDrawCallback: function() {
                            resetArrowButtons(tab);
                         },
                         fnDrawCallback: function(oSettings) {
                             attachTableBodyEventListeners(tab);
                             DataTablesUtils.togglePaginationControls(oSettings, json.aaData.length);
                         },
                         fnInitComplete: function (oSettings) {
                             hideLoader(tab);
                             showTable(tableSelector);
                             showFilterBtn(tab);
                         },
                         aoColumns: columnRender(tab),
                         bSort : true,
                         aaSorting: []
                     };

                     var pagination = new DatatablesPagination(settings);
                     pagination.display();
                },
                error : function() {
                    showErrorMessageDetail(tab);
                }
            });




function columnRender(tab) {
        return [{
            // Column1
            "sWidth" : "50px",
            "bSortable" : true,
            "fnRender": function(oObj) {
                return getColumnIcon(oObj.aData[0]);
            }
        }, {
            // Percentage %
            "sWidth" : "90px",
            "bSortable" : true,
            "sType": "numeric",
            "fnRender" : function(oObj) {
                return showValueOrDash(oObj.aData[1]);
            }
        }];
    }


        function showValueOrDash(value) {
        return value ? parseFloat(value) : " - ";
    }

1 Ответ

0 голосов
/ 17 мая 2018

Нужно ли использовать устаревшую функцию рендеринга? DataTables 1.10 и более поздние версии имеют методы визуализации с разными сигнатурами , которые можно легко использовать для решения этой проблемы. Глядя на устаревшую документацию , я не уверен, поддерживает ли она какие-либо другие подписи.

В более поздних версиях вы можете определить свою функцию рендеринга для использования текста международной версии для отображения, но использовать сортируемую версию parseFloat для сортировки.

как то так

//columns object
[{
   "sWidth" : "90px",
   "bSortable" : true,
   "sType": "numeric",
   "render": function (data, type, row) {return renderData(data, type, row); }
}]
//render function for the above column
function renderData(data, type, row){
   if(type = "display"){
      //return the unmodified data, or - if it is falsey
      return data ? data : "-";
   }
   else{
      //replace commas with periods, then parseFloat to sort the data
      return parseFloat(data.replace(",", "."));
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...