【问题标题】:SlickGrid -- viewing and grouping by multiple values fieldSlickGrid——按多个值字段查看和分组
【发布时间】:2014-11-26 13:40:22
【问题描述】:

我正在使用SlickGrid 并且对它非常满意,这是我遇到过的最好的网格之一。 我将DataView 用于数据,groupItemMetadataProvider 用于分组。

我有以下问题,正在寻找解决方案。 我的数据包含一些具有多个值的字段。 例如。一个数据条目可以与多个国家/地区相关联:美国、爱尔兰、新西兰或多个类别:猫、狗、鸟类。

两个问题:

  • 在一个单元格中实现多个条目的视图的最佳做法是什么。 ? 我想,这里可以使用自定义模板或格式化程序,但很高兴听到您的建议。
  • 如何实现按字段分组? 例如。我想按国家/地区分组,因此条目应显示在每个国家/地区组下,美国、澳大利亚和新西兰下的同一行。

现实生活中的例子

不分组

Name    | Animals
-----------------
Paker   | cats, dogs, birds
Michael | cats, snakes

按动物分组

Name    | Animals
-----------------
- cats
Paker   | cats, dogs, birds
Michael | cats, snakes

- dogs
Paker   | cats, dogs, birds

- birds
Paker   | cats, dogs, birds

- snakes
Michael | cats, snakes

交叉发布到 SlickGrid Google 群组:https://groups.google.com/forum/#!topic/slickgrid/BxS_4Lny3KE

非常感谢!

【问题讨论】:

  • 注意事项 #1:如果您对显示器过于花哨,您将进入dynamic row height 领域,这可能会很痛苦。 extractGroups function 期望一行仅属于 1 个组,因此默认实现将不允许您使用提供的数据实现项目符号 #2。
  • A less than ideal solution 然后成为维护代表各自所需状态的数据集。
  • @Origineil,感谢您的解决方案。当然,我想要某种本机解决方案,但据我所知,这不是 SlickGrid 支持的。我需要对项目进行一些操作的问题。例如。更新/删除。可能我需要在原始集合和展平集合中找到所有原始项目,并更新或删除它们。
  • @Origineil,您能否添加您的评论作为答案,我使用了您的解决方案并希望接受它。

标签: javascript slickgrid


【解决方案1】:

在单个单元格中显示自定义或基于集合的数据时,如果尝试垂直呈现该数据,则需要考虑the lack of native support for dynamic row height

检查grouping function (extractGroups ~line 472)

for (var i = 0, l = rows.length; i < l; i++) {
 r = rows[i];
 val = gi.getterIsAFn ? gi.getter(r) : r[gi.getter];
 group = groupsByVal[val];
 if (!group) {
   group = new Slick.Group();
   group.value = val;
   group.level = level;
   group.groupingKey = (parentGroup ? parentGroup.groupingKey + groupingDelimiter : '') + val;
   groups[groups.length] = group;
   groupsByVal[val] = group;
 }
 group.rows[group.count++] = r;
}

显示自定义getter 是可能的,但在每行的分组中使用/预期单个值。因此,对于包含多值单元格的行要出现在多个组中(不修改源),数据必须“扁平化”。

然后,less than ideal solution 将成为维护与正在呈现的视图状态相关的数据集。随着数据交互需求和/或数据大小的增加,这种解决方法变得不那么可行,并且倾向于在源中实现自定义。

【讨论】:

    猜你喜欢
    • 2018-11-28
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多