2016-09-06 149 views
0

使用jQuery數據表:千位分隔符不適用

$(document).ready(function() { 

    var table = $('#t_list').DataTable({ 

    "language": { 
     "decimal": ",", 
     "thousands": " ", 
     "emptyTable": _getText("datatable.resultat.zero"), 
     "info": _getText("datatable.zone.statut.info"), 
     "infoEmpty": "", 
     "infoFiltered": _getText("datatable.zone.statut.filtre"), 
     "lengthMenu": _getText("datatable.zone.nb.affichage"), 
     "loadingRecords": _getText("datatable.resultat.chargement"), 
     "processing": _getText("datatable.resultat.processing"), 
     "search": _getText("datatable.zone.filtre"), 
     "zeroRecords": _getText("datatable.resultat.zero"), 
     "paginate": { 
      "first": _getText("datatable.btn.premier"), 
      "previous": _getText("datatable.btn.prcdt"), 
      "next": _getText("datatable.btn.svt"), 
      "last": _getText("datatable.btn.dern") 
     } 
    }, 

    "pagingType": "full_numbers", 

    "serverSide": true, 

    "ajax": "<c:url value='/ajaxDataTableListUsers' />", 

    "columns": [{ 
     "data": "username" 
    }, { 
     "data": "email" 
    }, { 
     "data": "salary" 
    }, { 
     "data": "id" 
    }], 

    "columnDefs": [{ 
     "targets": 2, 
     "className": "alignDroite" 
    }, { 
     "targets": 3, 
     "render": function(data, type, row, meta) { 
      var client_noms = row.username; < c: url 
      var = "url_edit" 
      value = "/edit"/> 
       var url_edit = "${url_edit}?id=" + data; 
      return '<div style="text-align:center;"><a href="' + url_edit + '"><img src="resources/images/edit.png" /></a>&nbsp;' + 
       '<a href="#" id="del_' + data + '" onclick="afficheDlg(\'' + data + '\',\'' + client_noms + '\')"><img src="resources/images/cross.png" /></a></div>'; 
     } 
    }] 

    }); 

}); 

正如你可以看到有在language選項數千參數。但在運行時的格式不適用:

enter image description here

那麼,爲什麼不應用格式?

- 編輯 - 數據

來源是在這裏:

@Override 
    @Transactional 
    public List<User> list(int start, int length, String search, int triIdx, String ordreTri) { 
     Criteria criteres = sessionFactory.getCurrentSession().createCriteria(User.class); 
     if (!search.equals("")) { 
      if (NumberUtils.isNumber(search)) 
       criteres.add(Restrictions.like("salary", Double.parseDouble(search))); 
      else 
       criteres.add(Restrictions.like("username", search, MatchMode.ANYWHERE)); 
     } 
     criteres.setFirstResult(start); 
     criteres.setMaxResults(length); 
     if (ordreTri.equals("asc")) { 
      switch (triIdx) { 
       case 0: 
        criteres.addOrder(Order.asc("username")); 
        break; 
       case 1: 
        criteres.addOrder(Order.asc("email")); 
        break; 
       case 2: 
        criteres.addOrder(Order.asc("salary")); 
        break; 
       default: 
        criteres.addOrder(Order.asc("username")); 
        break; 
      } 
     } else { 
      switch (triIdx) { 
       case 0: 
        criteres.addOrder(Order.desc("username")); 
        break; 
       case 1: 
        criteres.addOrder(Order.desc("email")); 
        break; 
       case 2: 
        criteres.addOrder(Order.desc("salary")); 
        break; 
       default: 
        criteres.addOrder(Order.desc("username")); 
        break; 
      } 
     } 
     criteres.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); 
     @SuppressWarnings("unchecked") 
     List<User> listUser = (List<User>) criteres.list(); 
     return listUser; 
    } 

回答

1

你不顯示數據的來源。

Datatableshttps://datatables.net/manual/i18n)的documenation說,分析你的數據的時候,這樣的排序可以正確地發生了thousandsdecimal選項使用。它看起來不像Datatables被設計爲格式化您的數據,只是解析它。您應該根據您希望顯示的數據格式化數據。

+0

所以我必須格式化'columnDefs'選項中的Salaire列? – pheromix

+0

Something將'List '變成JSON或XML,用於''ajax'參數。 https://datatables.net/manual/ajax#Loading-data中的示例在JSON中顯示「薪水」:「$ 320,800」',所以它已經在那裏格式化了。 – davidsheldon