Kendo UI 网格在 Wicket 向导中无法正常工作

Kendo UI Grid not working properly in Wicket wizards

我正在将 Wicket 与 Wicket Kendo UI 库一起使用。

我有一个向导,其中一个步骤包含 Kendo 网格。当我到达这一步时 table 显示正常,但是当我移动到下一步然后 return 返回时,有时会出现问题:table 数据未显示在 table 而我看到的是空的 table 和无限滚动的启动画面。

检查网络我发现在显示带有 table 的步骤时有两个请求:一个包含带有 table 标记和 js 的 xml,另一个json 数据包含 table 行。两个请求都成功完成,但不知何故 table 无法从第二个请求中获取其行的数据。

这个问题并不是每次都会出现,有时 table 会正确地获取它的数据。

尝试隔离问题我发现了以下内容:Wicket 向导在步骤之间切换时使用方法 MarkupContainer.replace(Component child),因此无需向导也可以重现该问题。您需要做的就是将页面上的 table 替换为其他内容,然后再将其交换回来。

有没有人知道为什么 table 会以如此奇怪的方式行事。是不是因为新的标记有点失去了它的 link 和 js 代码,它找不到在哪里放置接收到的数据或其他东西?..

好的,我找到问题所在了。在呈现下一步时,Wicket 向导会替换上一步的标记,对吗?这样做会导致从 jquery 缓存 ($.cache) 中删除相关的缓存数据。事实证明,kendo 网格使用该数据,当恢复上一步并呈现网格时,它找不到该数据。所以在我的例子中,解决方案是在移动到下一步之前隐藏 table,这样,当网格被渲染时它重新填充它的缓存数据并且一切正常。