SlickGrid 没有 renderComplete 事件。是不是有一个事件会在所有渲染完成后触发
Posted
技术标签:
【中文标题】SlickGrid 没有 renderComplete 事件。是不是有一个事件会在所有渲染完成后触发【英文标题】:SlickGrid does not have a renderComplete event. is there an event that will fire when all rendering is doneSlickGrid 没有 renderComplete 事件。是否有一个事件会在所有渲染完成后触发 【发布时间】:2020-10-26 23:25:03 【问题描述】:虽然我已经破解了 SlickGrid 以添加此方法 [onRenderCompleted],因为我找不到任何内置功能;我正在寻找答案,因为我有两个我不喜欢黑客的问题。 1:我弄乱了基本代码,使维护成为问题。 2:我在所有渲染操作上都触发了这个事件。
我有一个第 3 方应用程序脚手架 C# MVC Serenity Web,它使用声明式编程来提供网格项目上的链接,因此我的需要是有条件的;我需要根据条件添加或删除它们。它们的创建是内置的,并且可以轻松连接所有链接和数据,因此我将有条件地删除链接。以为会很简单..
我可以通过一些代码和 css 技巧轻松删除链接。我的问题是代码何时运行 - 我需要知道网格何时添加了带有各自链接的光滑行。 RowCountChanged 不会按顺序在正确的时间触发 - 标记端尚未写入。 $document.ready 也不起作用.. 几乎所有其他事件(我已经尝试了很多)都不会在适当的时间触发 - (当所有内容都加载和渲染时。 - onDataLoaded 在这里也不起作用。 )
我知道有人提到使用 css animate 对象并注意它,但我没有示例代码,似乎这可能是一个更好的 hack,因为我可以在声明性方面添加 CSS ID。并且只需注意那个 css 对象(我不知道但希望得到帮助)。
我尝试使用 MutationObserver,但它似乎无法检测到节点。
1:是否有一个 SlickGrid 事件会在所有内容加载和渲染时触发? 2:如果没有 SlickGrid 事件 - 那么我如何使用 css 动画对象以及如何观察它以添加到 DOM 中?
【问题讨论】:
如果你使用 6pac/SlickGrid 分支,我们添加了一个onRendered 事件,它作为render()
方法here 的最后一行执行,但我不确定是否有任何异步那么这对你来说可能还为时过早,如果是这样的话,那么在onRendered
事件之上添加一个简单的setTimeout(() => , 1)
的完整周期可能就足够了
【参考方案1】:
在跟进主要问题之前的几点:
我相信 Serenity 使用 Slickgrid 的 MLiebman 分支。从那以后事情发生了很大的变化,目前的 master 在 github.com/6pac/SlickGrid,MLiebman 分支被认为是死的,以后版本的 JQuery 会出现问题 通常不鼓励对网格 DOM 元素进行 CSS 调整,因为动态滚动不适用于该技术 请注意,您可以定义一个列formatter
,这将允许您控制单元格中显示的内容,并且可以对其进行扩展以在单元格/行中添加或删除类
注意还有一个网格enableAsyncPostRender
选项,用于最好异步处理而不是在渲染操作期间处理的重量级对象。这适用于滚动,因为它结合了一种机制,如果在后渲染发生之前一行滚动出视口,则后渲染将被取消。如果渲染的对象需要显式清理,还有一个清理选项。
获得说明的最佳选择是查看 wiki 和示例页面。
【讨论】:
这些例子对我不起作用——据我所知,Serenity web .implementation 光滑的网格已经过调整——所以不能掉以轻心。 pt2:是的,在 WIKI 中用于 slickgrid。看着每一行上的 asyncPostRender(缺点?/否)我还没有弄清楚如何实现它。我添加了 onRenderComplete ,它可以工作,滚动不是问题:我不喜欢它,因为我的问题提及。不幸的是,宁静中的格式化程序只允许我格式化数据而不是禁用链接,我不确定何时添加链接以上是关于SlickGrid 没有 renderComplete 事件。是不是有一个事件会在所有渲染完成后触发的主要内容,如果未能解决你的问题,请参考以下文章
求助,怎么通过js获取slickgrid表格中的行数,选中行和一行中的数据