baukh789 / GridManager

🌐 快速、灵活的对Table标签进行实例化,让Table标签充满活力。
https://gridmanager.lovejavascript.com
MIT License
821 stars 139 forks source link

用户记忆中的列宽问题 #259

Closed a-l-o-n-g closed 2 years ago

a-l-o-n-g commented 2 years ago

您好,请问下table初始化已开启用户记忆,但如果将表格切换隐藏(display: none),或者将表格父级元素切换隐藏,再次显示的时候,之前调整的列宽却恢复成了初始列宽,这是正常的吗?

a-l-o-n-g commented 2 years ago

image

baukh789 commented 2 years ago

我刚进行了测试,确实存在这种情况。这是为了防止容器变化而做的处理,如果你使用到了用户记忆,应该避免这种情况,在需要隐藏/显示的时候,建议对表格进行销毁/渲染。

a-l-o-n-g commented 2 years ago

渲染是指重新初始化还是renderGrid? 我是想着能否通过getLocalStorage去调整,但如果获取到了宽度如何再去渲染宽度

baukh789 commented 2 years ago

渲染指的是重新初始化,这么做的原因: GridManager的交互需要宽度是一个精确的值,而容器隐藏后宽度所发生的变化,实例是无法计算的。

a-l-o-n-g commented 2 years ago

如果是重新初始化,那宽度就不是用户记忆中的宽度,而是一开始配置的宽度?如果是这样就没必要销毁和初始化了,结果都是变成初始的列宽;

baukh789 commented 2 years ago

重新初始化,只要不清除记忆,宽度是存储的。

a-l-o-n-g commented 2 years ago

如何利用getLocalStorage获取宽度去调整宽度呢?

baukh789 commented 2 years ago

通过renderGrid可以修改已经实例化的表格

a-l-o-n-g commented 2 years ago

好的,谢谢,我先去试试这种思路,通过getLocalStorage去调整宽度,然后通过renderGrid去调整columnData中对应的width;