2014-10-01 36 views
1

我使用SlickGrid,非常滿意,它是我見過的最好的網格之一。 我使用DataView作爲數據,groupItemMetadataProvider作爲分組使用。SlickGrid - 通過多個值查看和分組字段

我有以下問題並尋找解決方案。 我的數據包含一些具有多個值的字段。 例如一個數據輸入可以與多個國家相關聯:美國,IR,NZ或多個類別:貓,狗,鳥。

兩個問題:

  • 什麼是落實在一個小區的幾個條目視圖的最佳實踐。 ? 我想,自定義模板或格式化程序可以在這裏使用,但會很高興聽到您的建議。
  • 如何實現這樣的字段分組? 例如我想按國家分組,所以應該在每個國家組下顯示,在美國,澳大利亞和新西蘭的同一行。

活生生的例子

沒有動物分組

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

非常感謝!

+1

注意事項#1:如果您對顯示器太過幻想,您將進入[動態行高](http://stackoverflow.com/questions/2805094/is-variable-rowheight-a-possibility可能是痛苦的。 [extractGroups函數](https://github.com/mleibman/SlickGrid/blob/e004912b5ce29ac0d0cb04df50fe66db5e3af9ea/slick.dataview.js)期望一行只屬於一個組,因此默認實現將不允許您實現項目符號# 2提供的數據。 – Origineil 2014-10-02 14:17:50

+1

A [小於理想的解決方案](http://jsfiddle.net/origineil/7jp0z2t1/)然後變成維護代表相應期望狀態的數據集。 – Origineil 2014-10-02 15:27:15

+0

@Origineil,感謝您的解決方案。 當然我想要某種本地解決方案,但據我瞭解這不是SlickGrid支持的東西。 我需要對項目進行一些操作的問題。 例如更新/刪除。 很可能我需要在原始和展平集合中找到所有原始項目,並更新或刪除它們。 – Paker 2014-10-02 16:32:20

回答

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是可能的,但在每行的分組,單一值被用來/預期。因此,對於多值單元出現在多個組中的行(沒有源代碼),數據將不得不被「展平」。

然後,A less than ideal solution將變爲保持與呈現的視圖狀態相對應的數據集。隨着數據交互需求和/或數據量的增加,這種解決方法變得不太可行,並趨向於在源中實現定製。