我可以静态绑定DataTables.net,如下所示:
<script type="text/javascript">
$(document).ready(function () {
$('#testDatatable').dataTable({
"aaData": [
["Ibrahim", 55],
["Asif", 20],
["Shariful", 70],
["John", 55],
["Doe", 40],
["Nazmul", 30],
["Jane", 15],
["Ershad", 10],
["Yusuf", 44],
["Bill", 22],
["Steve", 18]
]
,
"aoColumns": [
{ "sTitle": "Name" },
{ "sTitle": "Age" }
]
});
});
</script>
但是对于prop aaData,我想从Web服务中获取数据。如下所示:
<script type="text/javascript">
$(document).ready(function () {
$('#testDatatable').dataTable({
"aaData": $.getJSON('http://localhost:9183/Service.svc/GetCustomer')
,
"aoColumns": [
{ "sTitle": "Name" },
{ "sTitle": "Age" }
]
});
});
</script>
我的服务如下:
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json)]
public List<Customer> GetCustomer()
{
List<Customer> customers = new List<Customer>();
customers.Add(new Customer { Name = "Ibrahim", Age = 10 });
customers.Add(new Customer { Name = "John Doe", Age = 20});
return customers;
}
这不起作用。它表明没有找到任何记录。 有人请告诉我我有哪些选择或我哪里出错。 任何建议都受到高度赞赏。
答案 0 :(得分:3)
您的webservice正在返回一个对象数组,默认情况下,数据表需要一个数组数组。您有两个选项,可以更新您的Web服务,也可以更改数据表配置以使用mData
属性按名称引用属性:
aoColumns": [
{ "sTitle": "Name", "mData": "Name" },
{ "sTitle": "Age", "mData": "Age" }
]
您可以在数据表reference page找到有关mData
的更多信息。只需搜索mdata
。
答案 1 :(得分:1)
所以,我最终可以将Datatable与我的Web服务调用绑定。这是一个迂回的方法,但至少绑定它是我的主要目标是解决。 我从我的服务中获取数据,运行一个循环,我将JSON格式化为Datatable接受格式JS Array并将“aaData”设置为格式化的JS数组:
$(document).ready(function () {
var returnData;
$.ajax({
url: "http://localhost:9183/Service.svc/GetCustomer",
async: false,
dataType: 'json',
success: function (data) {
returnData = data;
}
});
var arrayReturn = [], results = returnData;
for (var i = 0, len = results.length; i < len; i++) {
var result = results[i];
arrayReturn.push([ result.Age, result.Name]);
}
$('#testDatatable').dataTable({
"aaData": arrayReturn,
"aoColumns": [
{ "sTitle": "Name" },
{ "sTitle": "Age" }
]
});
});
我没有必要更改服务中的任何内容。 但我仍然不知道为什么我上面的第一次尝试不起作用,我有什么更好的选择。所以随便猜测这个。 感谢那些至少试图提供帮助的人。
答案 2 :(得分:0)