拖放列重新排序是一项很棒的功能,但如何阻止用户移动特定(非数据)列?
例如,我使用复选框选择器作为我的多选网格,但此列应始终锁定在左侧,而其他列可以自由重新排序。
答案 0 :(得分:2)
我查看了jQuery UI上的可排序演示,并修改了slick.grid.js中的setupColumnReorder函数以排除某些项目。通过排除复选框列,我可以防止它被重新排序,即使是在它之前拖动其他列。
function setupColumnReorder() {
var checkBoxColumn = $headers.children([0]).attr('id');
$headers.sortable({
items: "div:not('.slick-resizable-handle','#"+checkBoxColumn+"')",
...
由于我的复选框列总是第一个,所以我只是抓住了这个ID。有点黑客,但它有效。
答案 1 :(得分:2)
我试过了:
function setupColumnReorder() {
var checkBoxColumn = $headers.children([0]).attr('id');
$headers.sortable({
items: "div:not('.slick-resizable-handle','#"+checkBoxColumn+"')",
...
但是在我之前拖动其他列时遇到了问题。然后我尝试了这个:
grid.onColumnsReordered.subscribe(function (e, args) {
if (myGridColumns[0].id != grid.getColumns()[0].id)
{
grid.setColumns(myGridColumns);
}
else
{
myGridColumns= grid.getColumns();
}
});
这很好。