Jquery 引导表:从排序中排除ID列

Jquery 引导表:从排序中排除ID列,jquery,twitter-bootstrap,bootstrap-table,Jquery,Twitter Bootstrap,Bootstrap Table,当对其他列进行排序时,是否可以将ID列从排序中排除?(以避免ID混乱) 这里 HTML: 身份证件 名称 类型 最简单的方法是,如果显示的行id不重要,则根据行索引而不是内容生成“id列”中的编号。您仍然可以将内容的实际行作为第一个td的数据属性,这样您就可以隔离行内容或将数据传递回后端—只是显示的行索引将生成一个连续的行列表,该列表始终显示正确编号—而不考虑行顺序 请注意,我得到的按钮实际上是在单击时重新创建表的-这不是您将如何做的,但只是为了演示行索引的重新编号-而实际索引顺序在第一个td

当对其他列进行排序时,是否可以将ID列从排序中排除?(以避免ID混乱)

这里

HTML:


身份证件
名称
类型

最简单的方法是,如果显示的行id不重要,则根据行索引而不是内容生成“id列”中的编号。您仍然可以将内容的实际行作为第一个td的数据属性,这样您就可以隔离行内容或将数据传递回后端—只是显示的行索引将生成一个连续的行列表,该列表始终显示正确编号—而不考虑行顺序

请注意,我得到的按钮实际上是在单击时重新创建表的-这不是您将如何做的,但只是为了演示行索引的重新编号-而实际索引顺序在第一个td的数据属性中保持

$(文档).ready(函数(){
numberRows();
$('#sortButtonUp')。单击(函数(){
$('#summaryTable tbody').html('Susan Admin Bob Customer');
numberRows();
})
$('#sortButtonDown')。单击(函数(){
$('#summaryTable tbody').html('Bob CustomerSusan Admin');
numberRows();
})
})
函数numberRows(){
$('.generateId')。每个(函数(索引){
$(此).text(索引+1);
})
}

身份证件
名称
类型
上下快速移动
顾客
苏珊
管理

整理名字
对名称进行排序
我的想法是在

  • 一个全局变量,用于在排序开始之前保存表数据(即:onSort事件),以便对相关列的数据进行无序排序
  • 使用以前的表呈现数据(即:onPreBody事件)重置感兴趣列的顺序
我的片段:

$(文档).ready(函数(){
变量t=[
{“id”:“1”,“name”:“john”,“type”:“car”},
{“id”:“2”,“name”:“ted0”,“type”:“house”},
{“id”:“3”,“name”:“ted1”,“type”:“bike”},
{“id”:“4”,“name”:“ted2”,“type”:“bike”},
{“id”:“5”,“name”:“ted3”,“type”:“bike”},
{“id”:“6”,“name”:“ted4”,“type”:“bike”},
{“id”:“7”,“name”:“ted5”,“type”:“bike”},
{“id”:“8”,“name”:“ted6”,“type”:“bike”},
{“id”:“9”,“name”:“ted7”,“type”:“bike”},
{“id”:“10”,“name”:“ted8”,“type”:“bike”},
{“id”:“11”,“name”:“ted9”,“type”:“bike”},
{“id”:“12”,“name”:“ted10”,“type”:“bike”},
{“id”:“13”,“name”:“ted11”,“type”:“bike”},
{“id”:“14”,“name”:“ted12”,“type”:“bike”},
{“id”:“15”,“name”:“ted13”,“type”:“bike”},
{“id”:“16”,“name”:“ted14”,“type”:“bike”},
{“id”:“17”,“name”:“ted15”,“type”:“bike”},
{“id”:“18”,“name”:“ted16”,“type”:“bike”},
{“id”:“19”,“name”:“ted17”,“type”:“bike”},
{“id”:“20”,“name”:“ted18”,“type”:“bike”},
];
//表1
var savedData=null;
$(“#汇总表”).bootstrapTable({
数据:t,
onSort:函数(名称、顺序){
savedData=$('#summaryTable').bootstrapTable('getData').map(函数(元素,索引){
返回元素.id;
});
},
onPreBody:函数(args){
如果(savedData!=null){
args.forEach(函数(元素、索引){
element.id=savedData[index];
});
savedData=null;
}
}
});
});

表1

身份证件 名称 类型

我找到了在我的案例中最适合我的答案,那就是使用
数据格式化程序。使用分页、筛选器输入和列排序

一切都很好

只需添加一个函数:

function runningFormatter(value, row, index) {
    return index;
}

因此,我可能不得不在事件函数中再次使用:
$('#summaryTable').on('sort.bs.table',function(e,name,order){$('#summaryTable tr').each(function(index){$(this.find(“td”).text(index+1)})但即使这对我也不起作用。你可以使用CSS计数器来显示行号。谢谢你的回答,我一直在测试这个,到目前为止这是最好的答案,但我遇到了一个问题。我使用以下函数从数据库用ajax加载数据:
$(“#summaryTable”).bootstrapTable(“load”,data)在ajax成功函数中。如果我首先进行排序并向DB添加一些值,那么我希望通过调用上面提到的函数来刷新表中的数据,我会再次将ID搞乱。ID是在php中创建的,同时从查询结果中获取数据,并立即与其他数据一起发送。引导表在设置表排序时加载数据,soo…知道如何修复它吗?@soonic对不起,但我无法理解。在我的小提琴中,一切都很好。而且,我试着像你说的那样动态加载,但没有失败。所以,帮助你的唯一方法是:你能创造一个小提琴来模拟你的问题吗?非常感谢。好的,我稍后会尝试创建一个fiddle来模拟这个问题,但我想我现在只需要一个函数,它将循环行并再次分配索引,因为如果我加载更多行的数据,那么它的ID列需要重新分配,所以在数据加载或数据排序之后,我会调用这个函数。好的,我等小提琴。因为,没有真实的案例,我无法理解。很抱歉。谢谢你的尝试,我刚刚找到了问题的答案并发布在这里。
function runningFormatter(value, row, index) {
    return index;
}