【问题标题】:Make Slickgrid columns not sortable使 Slickgrid 列不可排序
【发布时间】:2021-05-14 11:19:52
【问题描述】:

我有一个包含多列的 SlickGrid 表,我希望索引列不受其他列排序的影响。

我发现this ancient question 准确描述了我在这里遇到的问题,但那里的答案对我不起作用。当我使用这个解决方案时,我的索引列没有返回任何值,它只是空白。

我试过如果简单地使用自定义格式化程序会从排序过程中排除列,但它没有。为此,我从here复制了“defaultFormatter”

function indexFormatter(row, cell, value, columnDef, dataContext) {
if (value == null) {
        return "";
      } else {
        return (value + "").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");
      }
    };

PS:我认为最好在一个新问题中提出这个问题,而不是恢复我之前链接的 9 岁问题。

【问题讨论】:

    标签: javascript slickgrid


    【解决方案1】:

    我认为最简单的方法是忽略索引列(毕竟这是 SlickGrid 用来查找行的,所以你不想弄乱它)而只使用实际的行号。

    function indexFormatter(row, cell, value, columnDef, dataContext) {
        return (row + 1) + '';
    };
    

    编辑:哎呀,我知道这也正是前面的答案所说的。尽管如此,他是 SlickGrid 的创建者,而我是当前的维护者之一,所以试试吧!您可能需要 "+ ''" 才能转换为字符串。

    【讨论】:

    • 嗯,这不是同一个答案。旧的“返回”后缺少括号。这可能是它对我不起作用的原因吗?另外,通过忽略索引列,您的意思是最好完全忽略它吗?或者使用您提供的代码是否安全?谢谢!
    • 我没试过,但应该可以。通过“忽略索引列”,我的意思是使用value 会从索引列产生 id,这是内部唯一键,通常不适合人类查看,如果发生排序,也不会按顺序排列。您想要的只是网格中行的索引,即row。它是从零开始的,因此我们添加一个以对人类友善 ;-) 我们添加一个空字符串以强制数值变为字符串。
    • 如果只有row 很重要,那么如果它们不相关,我为什么还要使用cell, value, columnDef, dataContext
    • 这只是网格传递给所有格式化程序的参数。你可以对他们做任何你想做的事,包括什么也不做。将它们视为格式化程序模板为您提供的一组工具。如果您不需要特定工具,请忽略它。但是,如果您愿意,可以使用row 将每第三行变为绿色,或者如果第三列的值以“c”开头,则使用datacontext 将行变为黄色。
    猜你喜欢
    • 2020-03-31
    • 2012-10-20
    • 2014-04-28
    • 2023-03-28
    • 2011-06-23
    • 1970-01-01
    • 2013-10-20
    • 2012-04-05
    • 2015-05-04
    相关资源
    最近更新 更多