我想清空jTable中的所有行。有没有办法用其他东西做到这一点,除了:
$("div[id=tblContacts] tr").remove();
我在jTable的源代码中看到了这个方法,但它是一个私有方法:
/* Removes all rows in the table and adds 'no data' row.
*************************************************************************/
_removeAllRows: function (reason) {
//If no rows does exists, do nothing
if (this._$tableRows.length <= 0) {
return;
}
//Select all rows (to pass it on raising _onRowsRemoved event)
var $rows = this._$tableBody.find('tr.jtable-data-row');
//Remove all rows from DOM and the _$tableRows array
this._$tableBody.empty();
this._$tableRows = [];
this._onRowsRemoved($rows, reason);
//Add 'no data' row since we removed all rows
this._addNoDataRow();
},
此方法甚至添加空行。有办法打电话吗?
答案 0 :(得分:2)
jTable插件不仅仅是一个网格/表画家,它为数据库提供了一个简单的CRUD接口。一旦给出了各种CRUD操作的URL,它将显示从服务器发送的数据并在服务器上管理该数据。 _removeAllRows
方法是正确的私有方法,在分页或重新加载表时预测新数据时使用。
鉴于jTable是数据库前端的上下文,清空所有行意味着什么?如果这意味着删除数据库中的所有行,则存在jtable方法deleteRows
http://jtable.org/ApiReference/Methods#met-deleteRows。
但我怀疑这不是问题的意思。在JTable范例中,呈现空jTable的最佳方式是请求服务器发送空列表。这是过滤函数的特例,因此请使用jTable load
方法http://jtable.org/ApiReference/Methods#met-load。您可以在服务器请求上使用flag来返回空列表。
$('#myjtable').jtable('load',{empty: 'true'});
或构造一个始终为空列表的过滤器请求。
$('#myjtable').jtable('load',{id: 0});
选择最适合您服务器代码的方法。 load
方法确实需要ajax请求,并且在服务器上有一点工作。如果这是不可接受的(我并不意味着不受欢迎),那么您可以使用函数替换简单的操作URL,您可以在其中返回空列表,或者自己执行ajax请求以获取实际数据。与单线解决方案相比,要编写的代码要多得多。
答案 1 :(得分:1)
可以从客户端进行操作,但是页面计数器不会重置。
$('#tableId').data('hikJtable')._removeAllRows();