拖放列重新排序是一项很棒的功能,但是如何防止用户移动特定(非数据)列?
例如,我将复选框选择器用于我的多选网格,但该列应始终锁定在左侧,而其他列可以自由重新排序。
拖放列重新排序是一项很棒的功能,但是如何防止用户移动特定(非数据)列?
例如,我将复选框选择器用于我的多选网格,但该列应始终锁定在左侧,而其他列可以自由重新排序。
我试过这个:
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();
}
});
这很好。
我查看了 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。有点破解,但它的工作。