环境:
我注意到,当完成分页时,之前选择的行会消失..这意味着它们不再被选中。 在SelectedRows演示之后,我看到div填充了当前所选行中的一些字段。 但是一旦你关闭页面,那个选择就会丢失。
对现有问题发表了评论 https://github.com/hikalkan/jtable/issues/243
但没有即将到来的解决方案。
在我的小测试中,我选择了一行,然后我转到下一页。 以下顺序触发了以下事件:
同样的问题也发生在排序上[选择丢失],同时触发相同的事件顺序。
现在,我绝不是jQuery或Javascript的人。
但是想知道是否有可能在用户选择一行时创建一个集合类, 将行的键添加到集合中(如果取消选中该行,则将其删除)。 在分页时,让loadingRecords更新集合,并在触发selectionChanged时, 如果集合中有物品;它只是重新选择它们。
思想/溶液
答案 0 :(得分:2)
发现此问题未得到答复,然后将此功能添加到网站。所以我分享我的所作所为,希望能帮助别人。我认为可能会有一些优化,所以请随意提供它们作为评论。
我的策略是创建一个$ schools数组来存储行键,更新此数组以匹配选择,并使用此数组在分页活动期间选择行。 selectionChanged事件仅包含可见行。所以在这个版本中,我首先从$ collegess数组中删除所有可见行,然后添加任何当前可见和选定的行。
var $colleges;
...
$('#collegeSearchContainer').jtable ({
...
fields: {
uid: { key:true, list:false, edit:false, create:false }
...
},
selectionChanged: function () {
var $table = $('#collegeSearchContainer');
// Get all currently selected rows
var $selectedRows = $table.jtable('selectedRows');
// DEL - add all non-visible rows to colnew then swap
var $colnew = [];
for (var i = 0, len = $colleges.length; i < len; i++) {
$row = $table.jtable('getRowByKey', $colleges[i]);
if (!$row)
$colnew.push($colleges[i]);
}
$colleges = $colnew;
// ADD - make sure currently selected rows are selected
if ($selectedRows.length > 0) {
$selectedRows.each(function () {
var record = $(this).data('record');
if ($.inArray(record.uid, $colleges) < 0)
$colleges.push(record.uid);
});
}
// UPDATE selection indicator for colleges
$('#email_schools').html($colleges.length);
},
rowInserted: function (event, data) {
// select those colleges that have been selected in the past
if ($.inArray(data.record.uid, $colleges) >= 0) {
$('#collegeSearchContainer').jtable('selectRows', data.row);
}
},
答案 1 :(得分:0)
我认为应满足以下条件。
重新加载-将保持您的状态记录。
columnname: {
key: true,
list: false,
},