如何使用JSP中的Jquery获取DataTables中的总行数

时间:2017-10-30 04:08:25

标签: jquery jsp datatables

我在我的应用程序中使用数据表。加载页面时,我需要在一个范围内显示表格的行数。我使用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>

2 个答案:

答案 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>

<强> http://jsfiddle.net/f9zq9gn8/

答案 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())
        }
    });

这是唯一对我有用的东西。