如何在数据表中保留选定的行

时间:2018-07-02 22:40:06

标签: asp.net-mvc knockout.js

这是我创建数据表的方式

<table id="@nameof((OrderViewModel.Orders)" 
       data-bind="datatable: @nameof((OrderViewModel.Orders), datatableOptions: getTableOptions('@nameof((OrderViewModel.Orders)')" 
       class="table table-bordered dt-responsive nowrap datatable-style" 
       cellspacing="0">
</table>

执行更新操作后,我需要保持选中的行处于选中状态,我调用搜索方法来刷新数据表(我知道这不是最好的方法),因此所有选中的项都将丢失。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您可以在发送ajax进行更新之前创建所选数据键字段的映射。 成功后,当您搜索数据库并获取结果时,您可以比较原始选择并将任何先前选择的行重新标记为已标记。 假设有一个属性.isSelected将您的模型标记为选定模型:

在ajax之前:

var selectedKeys = myArray.filter(function(item){ return item.isSelected(); }).map(funcion(item){ return item.KeyFieldToLookFor(); })

然后在取回新数据时:

success: function(data){
   if(data && data.length)
      data.forEach(function(item){ 
      if(selectedKeys.contains(item.KeyFieldToLookFor())
     {
        item.isSelected(true);
     }
  })
}