muyang1214 发表于 2023-5-10 10:12:14

Wijmo5表格分组折叠收缩

参照文档的示例,通过groupDescriptions设置三层分组,
如何让初次加载时,数据全部先折叠收缩起来,类似这样?






Richard.Ma 发表于 2023-5-10 10:12:15

有一个collapseGroupsToLevel方法,可以按照层级折叠,0是全部折叠
    theGrid.collapseGroupsToLevel(0)

muyang1214 发表于 2023-5-11 09:37:15

我这样设置了,发现没有变化

和我分组的配置有关系吗

Richard.Ma 发表于 2023-5-11 11:11:04

这是一个方法,显然没法这么用,只能grid初始化后来代码执行

muyang1214 发表于 2023-5-11 15:34:00


:lol这样写,成功啦,第一次会全部折叠

但我刷新下页面又展开了,感觉是不是因为我的itemsSource的数据源是websocket传输的实时数据,不断变化,导致了MultiRow的自动更新渲染,wijmo有什么方法可以让itemsSource变化时,只动态改变单元格的数据,不重新渲染整个表格,我现在的表格拉长某列宽度时会立刻还原,点击某个单元格,选中的项会立刻回到顶部,感觉都是表格不断更新造成的。
上次您发的动态更新的例子,我不知道如何更改我这边的逻辑,我这边的数据源websocket每500ms就会全量更新下,我怎么能让MultiRow不跟着数据源的变化而反复渲染,可以考虑用immutable数据结构来存储吗?这里困扰了我好久,希望版主给个思路:loveliness:

Richard.Ma 发表于 2023-5-11 18:29:38

理论上来说,更新数据源(不是重新设置数据)并不会引起你说的问题。
你可以上传一个简单的demo上来看看

muyang1214 发表于 2023-5-12 09:04:02

// data数据就是websocket实时传输的数据,每500ms全量更新次
const data = useSelector((state) => state.websocket.data);
useEffect(() => {
    if (data) {
      setItemsSource(data);
    }
}, [data]);

// 对数据做下处理,并分组
const tableData = new CollectionView(handleInitialData(itemsSource),
    {
      groupDescriptions: ["ExchangeID", "ObjectCode", "DateCode"],
      sortDescriptions: ["ExchangeID", "ObjectCode", "DateCode"],
    })

// 表格渲染

<MultiRow
   style={{ height: "100vh", width: "100%" }}
   itemsSource={tableData}
   groupHeaderFormat={'<b>{value}</b>:{count:n0} 条'}
   layoutDefinition={[...]}






/>


// 我当下的代码逻辑是这样,不知道为什么tableData的变化会引起MultiRow表格的重新渲染
// 导致现在表格拉长某列宽度会立刻还原;点击某个单元格,选中的项会立刻回到顶部;选择某列隐藏后立刻又还原







Richard.Ma 发表于 2023-5-12 18:14:40

正常来说你应该是去操作(新增行,删除行,修改·······),我不知道你上面的setItemsSource是怎样操作的

页: [1]
查看完整版本: Wijmo5表格分组折叠收缩