【问题标题】:Checkboxes not sorting correctly in Slick Grid复选框在 Slick Grid 中未正确排序
【发布时间】:2026-01-22 18:15:02
【问题描述】:

我正在修复我们的一个应用程序中的排序问题,但我遇到了问题。我正在为我的网格实现使用 Slick Grid。当前的排序功能(不是我自己编写的)工作正常,除了 1 个警告。它会对列进行很好的排序,但是在按列排序时,我无法让我的复选框保持在其各自的行中。复选框保留在排序之前它们最初所在的同一行,因此如果用户要执行与被选中的行相关的众多功能之一,它将在错误的行上执行。如果我需要更详细地说明这一点,请告诉我,因为如果不观察行为就很难解释。

我当前设置的简要示例:

checkboxSelector : new Slick.CheckboxSelectColumn({
              cssClass: "slick-cell-checkboxsel",
        }),

        columns : [{
                id : "name",
                name : NAME,
                field : "name",
                width : 300,
                editor : Slick.Editors.Text,
                sortable : true

我还有几列,但这就是我的行的样子。我会有一个复选框,然后是一个名称字段,然后是另一个列,等等。

现在是我的排序方法:

APPLICATION.grid.onSort.subscribe(function (e, args) 
{
    var cols = args.sortCols;

    APPLICATION.gridData.sort(function (dataRow1, dataRow2) 
    {
        for (var i = 0, l = cols.length; i < l; i++) 
        {
            var field = cols[i].sortCol.field;
            var sign = cols[i].sortAsc ? 1 : -1;
            var value1 = dataRow1[field], value2 = dataRow2[field];
            var result = (value1 == value2 ? 0 : (value1 > value2 ? 1 : -1)) * sign;

            if (result != 0) 
            {
                return result;
            }
        }

        return 0;
    });

    APPLICATION.grid.invalidate();
    APPLICATION.grid.render();
});

我是 Slick Grid 的新手,已经检查了他们的 API,但无法提出任何解决方案。有谁知道如何让我的复选框在按列排序时保持在其各自的行中?

非常感谢任何帮助。

谢谢!

-戴夫 F.

【问题讨论】:

  • 介意用你的 JSFiddle 设置支持我们吗?以one 为例。

标签: javascript jquery html sorting slickgrid


【解决方案1】:

dataView.syncGridSelection(grid,true)

我想你可以在这里找到答案, Slickgrid checkbox and filtering problems

【讨论】:

  • 在彻底研究了 Slick Grid 的 Data View API 之后,这似乎是一个不错的方法。但是,在我之前写这篇文章的人并没有使用数据视图。他们将网格声明如下: APPLICATION.grid = new Slick.Grid("#applicationGrid", APPLICATION.gridData, APPLICATION.columns, APPLICATION.options);其中 APPLICATION.gridData 是数据传入的数组。在这种情况下,这似乎取代了数据视图,实现数据视图将是一项艰巨的任务。不过,我非常感谢您的反馈。还有其他想法吗?
最近更新 更多