我在我的应用程序中使用数据表。加载页面时,我需要在一个范围内显示表格的行数。我使用table.data()。count()来获取行的计数。但它没有给出正确的价值。
JSP:
foreach (var item in await Class.function())
{
dataTable.Rows.Add(item.Name, item.TotalDownloads, item.LastUpdated, item.Version);
}
Jquery的:
<table id="example" class="" cellspacing="0" width="100%" style="padding: 10px">
<thead>
<tr>
<!-- <th>S No</th> -->
<th>Doc Id</th>
<th id="Position">Geo</th>
<th id="Position">Practice</th>
<th id="Position">Opportunity Id</th>
<th id="Position">Reference Id</th>
<th id="Position">Status</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
答案 0 :(得分:3)
首先,在初始化表之后,您不能依赖ready()
执行。 ready()
构造实际上很少需要甚至是有用的,当人们认为需要它时,通常是糟糕设计的副作用。我在这里看到了数以百计的帖子,其中人们遇到了由特殊的嵌套ready()
范围引起的问题,而且大多数时候使用ready()
的唯一原因是“传统”或“只是为了确保“,即cargo cult programming。
其次,count()
上没有data()
方法。有,但这是因为data()
实际上是返回一个API,数据作为一个附加API方法的数组。
因此使用Array.length
获取行数,并将代码放在dataTables initComplete
回调中:
var table = $('#example').DataTable({
initComplete: function() {
$('#count').text( this.api().data().length )
}
})
标记可能如下所示:
<p id="count"></p>
答案 1 :(得分:0)
以 davidkonrad 的回答为基础,但将该功能保留在数据表中:
let table = $('#example').DataTable({
"ajax": {
//Do your ajax stuff to get your data
},
initComplete: function () {
//After the ajax has run, initComplete can get the total count of lines .
console.log(table.data().count())
}
});
这是唯一对我有用的东西。