2016-09-06 83 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