SlickGrid - 按多个值字段查看和分组

时间:2014-10-01 16:27:12

标签: javascript slickgrid

我正在使用SlickGrid并对此非常满意,这是我见过的最好的网格之一。 我使用DataView表示数据,groupItemMetadataProvider表示分组。

我遇到以下问题并寻找解决方案。 我的数据包含一些具有多个值的字段。 例如。一个数据输入可以与多个国家/地区相关联:美国,IR,新西兰或多个类别:猫,狗,鸟。

两个问题:

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

真实生活示例

不分组

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 Group:https://groups.google.com/forum/#!topic/slickgrid/BxS_4Lny3KE

非常感谢!

1 个答案:

答案 0 :(得分:2)

在单个单元格中显示自定义或基于集合的数据时,如果尝试垂直呈现该数据,则需要考虑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是可能的,但在每行的分组中使用/预期使用单个值。因此,对于具有多值单元格的行显示在多个组中(没有修改源),数据必须被平铺&#34;。

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