我需要确保我可以使用DataTables,1.10来使用Select插件 - 分页设置但是当使用服务器端处理时所选项目消失了,我可以看到几十个引用和黑客,但是感觉很好某个人干净地解决了这个问题
我希望能够记住分页中选定的行。
下面的咖啡脚本:
$('#users-table').dataTable
processing: true
serverSide: true
select: true
rowId: 'row_id'
deferRender: true
ajax: $('#users-table').data('source')
pagingType: 'full_numbers'
columns: [
{ data: 'name' }
{ data: 'phone' }
{ data: 'address' }
]
任何明显的解决方案?
答案 0 :(得分:1)
定义rowId
后,您可以将所选行的id
存储在数组select
中。在每次绘制时,循环浏览页面的可见行并重新选择之前已选择的任何行:
select = []
# row is selected, add to array
table.on 'select', (e, dt, type, indexes) ->
rowId = table.row(indexes[0]).id()
if ! ~select.indexOf(rowId)
select.push rowId
return
# row is deselected, remove from array
table.on 'deselect', (e, dt, type, indexes) ->
rowId = table.row(indexes[0]).id()
index = select.indexOf(rowId)
if index > -1
select.splice index, 1
return
# on each draw, cycle trough visible rows
# re-select rows if their id appears in the select array
table.on 'draw', ->
table.rows().every (rowIdx, tableLoop, rowLoop) ->
if ~select.indexOf(@id())
@select()
return
return
希望它也适用于咖啡脚本。使用 http://js2.coffee/
翻译了javascript多选:
table.on 'select', (e, dt, type, indexes) ->
indexes.forEach (id) ->
rowId = table.row(id).id()
if ! ~select.indexOf(rowId)
select.push rowId
return
return
table.on 'deselect', (e, dt, type, indexes) ->
indexes.forEach (id) ->
rowId = table.row(id).id()
index = select.indexOf(rowId)
if index > -1
select.splice index, 1
return
return