基于列索引和更改列数的DataTable默认排序问题

时间:2015-09-17 15:50:01

标签: jquery .net vb.net datatables

我试图找出一种方法来解决在Repeater中设置DataTable的问题。根据查看页面的用户,列数更改。例如,User1将看到8列,而user2将在表中看到7列。

Datatables允许我选择具有订单功能的表的默认顺序:

var table = $('#example'String).DataTable();

// Sort by column 8 and then re-draw

table
    .order( [ 8, 'asc' ] )

问题在于每当我更改User2的第1列的可见性时:

column0.Visible = False

...列数更改,因此执行odering的正确索引已从索引8更改为索引7.

我尝试使用<td> ID的默认排序,但它只会接受Colummn Index

我曾试图使用负面索引从右侧开始,但它不起作用。

我还试图找到一种手动硬编码表格列的方法,而不会将订单更改为最终用户。

如果我可以更改列的顺序,但它们需要在屏幕上按特定顺序排列,这将很简单。

任何熟悉Datatables的人都可以帮助我解决这个问题。非常感谢:)

1 个答案:

答案 0 :(得分:1)

我无法看到您的数据表Init代码,但我通过在init上命名列然后使用它来查找列索引来实现此目的:

在init中:

table = $("table").DataTable({
           "columns": [
                    {"name": "Row1"}
                    {"name": "Row2"}
                     ]
         });

然后,您可以像这样获取行的索引:

var row1Index = table.column('Row1:name').index();

使用索引进行过滤:

table.order([row1Index, 'asc']);

它应该允许你的索引是基于初始化的变量。

请在此处查看名称文档:https://datatables.net/reference/option/columns.name