我正在将一个大型Dojo 1.1应用程序转换为Dojo 1.9.1&在这个过程中用dgrid.Grid替换dojox.Grid。我最初的问题是列标题一直被第一行覆盖。在这里研究我发现,由于网格直接或间接嵌入到dijit布局小部件中,我应该使用dgrid.extensions.DijitRegistry mixin。然而,这反过来导致网格根本不显示。它们正在被添加,但被其样式隐藏,显式设置为零宽度&高度,这在过去我已经确定为调整大小问题的症状。这些网格位于TabContainer的不同选项卡上,每个选项卡都显示一个自定义窗口小部件。这些自定义小部件中的每一个都实现了一个简单的resize方法,该方法调整了“包含”ContentPane的大小,在该ContentPane上添加了一个或多个网格。
我的理解是DijitRegistry mixin应该使网格在dijit注册表和注册表中注册。这应该意味着在调整大小时,网格应该被调整为内容窗格的“dijit”子项。
显然有些事情是错的,但我不确定在哪里看。建议&解决方案赞赏。
答案 0 :(得分:0)
它通常只是调用resize()的问题。我在创建包含dgrid的自定义小部件时使用的一种技术是从布局小部件(例如BorderContainer)而不是dijit / _WidgetBase进行扩展。这给了我一个关于resize函数的钩子。我只是覆盖它,调用this.inherited(arguments),然后显式调整我的网格大小。除此之外,您可以使用.on连接以显示网格容器所在的事件,并在显示容器时调整其大小。