这让我发疯了一个周末,虽然我发现似乎是一个可行的解决方案,但我的问题是我是否缺少使用 Dojo/Dijit 的一些基本知识。
这就是问题所在:每当我创建一个dgrid使用 JsonRest 存储并且位于 TabContainer 的隐藏选项卡(不是最初选择的选项卡)的页面时,我都会得到 DOMExceptions 和有点搞砸的 dgrid。特别是,dgrid 在最后一行数据下有很大的空白区域,滚动到 dgrid 数据的底部或顶部会引发额外的 DOMExceptions。
如果我单击其中一个列标题对 dgrid 进行排序,它会重置其布局并正常工作。如果 dgrid 在页面的可见部分而不是未选择的选项卡上初始化,那很好。如果我使用内存存储而不是 JsonRest,一切都很好(即使 dgrid 在隐藏选项卡中初始化)。如果 dgrid 在隐藏选项卡中初始化但没有存储,则很好(但为空)。
根据证据,我猜这个问题与 JsonRest 查询需要时间有关,并且由于某种原因,它在初始化时会破坏 dgrid。我的解决方案是创建没有商店的 dgrid,然后在显示包含 dgrid 的选项卡时设置商店。不过,这似乎很笨拙。我应该能够创建一个带有商店的 dgrid,而不必在外部摆弄它。
那么,我的有点骇人听闻的解决方案是处理使用服务器提供的数据初始化隐藏的 dgrid 的正确(或至少是合理的)方法,还是我缺少关于 TabContainer+dgrid+JsonRest 的设置?