Ale*_*ber 64 jquery-datatables
请问有谁知道,下面这个非常简单的HTML文件出了什么问题?

我只是想使用一个对象数组作为DataTables的数据源:
tests.html:
<html>
<head>
<link type="text/css" rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css">
<link type="text/css" rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.2/css/jquery.dataTables_themeroller.css">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jquery.dataTables/1.9.2/jquery.dataTables.min.js"></script>
<script type="text/javascript">
var data = [
{"Name":"UpdateBootProfile","Result":"PASS","ExecutionTime":"00:00:00","Measurement":[]},
{"Name":"NRB Boot","Result":"PASS","ExecutionTime":"00:00:50.5000000","Measurement":[{"TestName":"TOTAL_TURN_ON_TIME","Result":"PASS","Value":"50.5","LowerLimit":"NaN","UpperLimit":"NaN","ComparisonType":"nctLOG","Units":"SECONDS"}]},
{"Name":"NvMgrCommit","Result":"PASS","ExecutionTime":"00:00:00","Measurement":[]},
{"Name":"SyncNvToEFS","Result":"PASS","ExecutionTime":"00:00:01.2500000","Measurement":[]}
];
$(function() {
var testsTable = $('#tests').dataTable({
bJQueryUI: true,
aaData: data,
aoColumns: [
{ mData: 'Name' },
{ mData: 'Result' },
{ mData: 'ExecutionTime' }
]
});
});
</script>
</head>
<body>
<table id="tests">
<thead>
<tr>
<th>Name</th>
<th>Result</th>
<th>ExecutionTime</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
更新:好的,我得到了作者的答案,使用更新版本的DataTables或将mData重命名为mDataProp
小智 80
对于null或undefined value error,只需将此行添加到属性:,"columnDefs": [ { "defaultContent": "-", "targets": "_all" } ]
示例:
oTable = $("#bigtable").dataTable({
"columnDefs": [{
"defaultContent": "-",
"targets": "_all"
}]
});Run Code Online (Sandbox Code Playgroud)
警报框不会再次显示,任何空值都将替换为您指定的值.
Bum*_*tle 26
您正在使用一组对象.你可以使用二维数组吗?
http://www.datatables.net/examples/data_sources/js_array.html
看到这个jsfiddle:http://jsfiddle.net/QhYse/
我使用了这样的数组,它运行良好:
var data = [
["UpdateBootProfile","PASS","00:00:00",[]] ,
["NRB Boot","PASS","00:00:50.5000000",[{"TestName":"TOTAL_TURN_ON_TIME","Result":"PASS","Value":"50.5","LowerLimit":"NaN","UpperLimit":"NaN","ComparisonType":"nctLOG","Units":"SECONDS"}]] ,
["NvMgrCommit","PASS","00:00:00",[]] ,
["SyncNvToEFS","PASS","00:00:01.2500000",[]]
];
Run Code Online (Sandbox Code Playgroud)
编辑以包括对象数组
这个问题有一个可能的解决方案:jQuery DataTables fnrender with objects
这个jsfiddle http://jsfiddle.net/j2C7j/使用了一个对象数组.为了得不到错误,我必须用3个空白值填充它 - 不太理想,我知道.您可以使用fnRender找到更好的方法,如果您这样做,请发布.
var data = [
["","","", {"Name":"UpdateBootProfile","Result":"PASS","ExecutionTime":"00:00:00","Measurement":[]} ]
];
$(function() {
var testsTable = $('#tests').dataTable({
bJQueryUI: true,
aaData: data,
aoColumns: [
{ mData: 'Name', "fnRender": function( oObj ) { return oObj.aData[3].Name}},
{ mData: 'Result' ,"fnRender": function( oObj ) { return oObj.aData[3].Result }},
{ mData: 'ExecutionTime',"fnRender": function( oObj ) { return oObj.aData[3].ExecutionTime } }
]
});
});
Run Code Online (Sandbox Code Playgroud)
zer*_*sed 10
这困扰了我一个多小时.
如果您正在使用dataSrc选项和列defs选项,请确保它们位于正确的位置.我在ajax设置中嵌套了列defs并且丢失了太多时间来计算出来.
这很好:
这个不好:
微妙的差异,但真实足以造成脱发.
我遇到了同样的问题.事实证明,在最后一栏之后,我错过了逗号.我的生命浪费了30分钟,我永远不会回来!

确保列名称相同。它们区分大小写。在这里,就我而言,当模型的列名称大写并且我在 ajax 请求的数据中使用所有小写字母时,我收到此错误。
因此,我通过与现有模型名称完全相同的方式匹配列名称来解决。
数据表绑定
$("#Customers").DataTable({
ajax: {
url: "/api/customers/",
dataSrc: ""
},
columns: [
{
data: "Name",
render: function (data, type, customer) {
return "<a href='/customers/edit/" + customer.Id + "'>" + customer.Name + "</a>";
}
},
{
data: "Name"
},
{
data: "Id",
render: function (data) {
return "<button class='btn-link js-delete' data-customer-id=" + data + ">Delete</button>";
}
}
]
});
Run Code Online (Sandbox Code Playgroud)
网络API方法:
public IEnumerable<Customer> GetCustomers()
{
return _context.Customers.ToList();
}
Run Code Online (Sandbox Code Playgroud)
我的模特:-
public class Customer
{
public int Id { get; set; }
[Required]
[StringLength(255)]
public string Name { get; set; }
[Display(Name="Date Of Birth")]
public DateTime? BirthDate { get; set; }
public bool isSubscribedToNewsLetter { get; set; }
public MembershipType MembershipType { get; set; }
[Display(Name="Membership Type")]
[Required]
public byte MembershipTypeId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
所以在我的例子中,我正在用列(名称,名称,Id)填充数据表..我正在复制第二个列名称进行测试。
当无法找到数据表配置中定义的请求字段时,这是数据表中非常常见的情况。
例如:
"aoColumns": [{
mData: 'mobile', sWidth: "149px;"
}, {
mData: 'name', sWidth: "121px;"
}, {
mData: 'productName', sWidth: "116px;"
}
}];
Run Code Online (Sandbox Code Playgroud)
在这里,如果 DataTable 没有收到上述属性。它将生成此警告:
DataTables warning: Requested Unknown parameter '0' from the data source for row '0'
要克服这个问题,您只需在“aoColumns”中设置默认值
例如:
"aoColumns": [{
mData: 'mobile',sDefaultContent : '',sWidth: "149px;"
}, {
mData: 'name',sDefaultContent : '', sWidth: "121px;"
}, {
mData: 'productName',sDefaultContent : '', sWidth: "116px;"
}
}];
Run Code Online (Sandbox Code Playgroud)
sDefaultContent将抑制警告。
注意:此属性可能会根据您使用的数据表版本进行更改。
| 归档时间: |
|
| 查看次数: |
141807 次 |
| 最近记录: |