我有一个由jQuery DataTables增强的动态表,它显示一个类似于这个例子的自定义对象.
JSON:
{
"data": [
{
"name": "Tiger Nixon",
"position": "System Architect",
"salary": "$320,800",
"start_date": {
"display": "SomeString",
"timestamp": 1303686000
},
"office": "Edinburgh",
"extn": "5421"
},
// ... skipped ...
]}
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
$(document).ready(function() {
$('#example').DataTable( {
ajax: "data/orthogonal.txt",
columns: [
{ data: "name" },
{ data: "position" },
{ data: "office" },
{ data: "extn" },
{ data: {
_: "start_date.display",
sort: "start_date.timestamp"
} },
{ data: "salary" }
]
} );
} );
Run Code Online (Sandbox Code Playgroud)
不同之处在于我动态构建列配置,因为列可以按任何顺序排列,其他列可以在列表中添加或删除.对于这个例子(我的情况非常相似),问题是由于某种原因,该timestamp属性被排序为String而不是作为数字排序.
我发现在将"type"列设置为"number"之后,这个顺序完美无缺.我假设DataTables由于某种原因(可能因为显示元素是一个字符串)自动检测列为"String".
DataTables如何设置列的类型,何时未显式声明?
编辑1
我做了一个示例代码来显示问题 http://jsfiddle.net/Teles/agrLjd2n/16/
jQuery DataTables具有用于类型检测的内置机制。有多种预定义的功能可用于各种类型,并具有string数据类型的备用功能。
有多种方法可以指定数据类型,以下仅是其中几种。
解决方案1
使用type选项。
$(document).ready(function() {
$('#example').DataTable( {
ajax: "data/orthogonal.txt",
columns: [
{ data: "name" },
{ data: "position" },
{ data: "office" },
{ data: "extn" },
{ data: "start_date.display", type: "date" },
{ data: "salary" }
]
} );
} );
Run Code Online (Sandbox Code Playgroud)
解决方案2
使用返回的JSON数据进行类型检测,columns.data有关详细信息,请参阅。
$(document).ready(function() {
$('#example').DataTable( {
ajax: "data/orthogonal.txt",
columns: [
{ data: "name" },
{ data: "position" },
{ data: "office" },
{ data: "extn" },
{ data: {
_: "start_date.display",
sort: "start_date.timestamp",
type: "start_date.timestamp",
} },
{ data: "salary" }
]
} );
} );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10543 次 |
| 最近记录: |