我在Ext.NET中有一个行扩展器,它在网格面板上定义,ID为MyGridPanel
,如下所示:
x.RowExpander()
.Loader(x.ComponentLoader()
.Mode(LoadMode.Component)
.Url(Url.Action("GetExpandedView", "My"))
.Listeners(ls =>
{
ls.Expand.Handler = string.Format("My.onListRowExpand('{0}', {1}, this);",
Url.Action("GetMyView", "My"), Model.Id);
})
.Params(p =>
{
p.Add(new Parameter("id", Model.Id));
}))
在扩展后会调用My.onListRowExpand
函数,该函数会做一些事情,包括使用App.MyGridPanel
作为panel
的参数来调用此函数:
fitPanelHeight = function(panel) {
// Update the panel so that we don't cut off the rest of the grid
if (panel.getHeight() < frameElement.offsetHeight) {
panel.setHeight(frameElement.offsetHeight);
panel.update();
}
}
本质上,所有此方法所做的就是扩展我传入的容器,这样当我扩展行扩展器时,什么都不会中断。这解决了我在HBox布局和行扩展器中遇到的一个问题,该问题要求我设置容器的高度。我真的只需要做一次,但是我还没有弄清楚如何做到这一点。
无论如何,当我在Internet Explorer 11中运行此代码时,我遇到一个问题,在Ext.JS的源代码中的 somewhere 处抛出了异常,说明:
无法获取未定义或空引用的属性'down'
对我来说,这似乎是Ext.JS / Ext.NET的错误,因为删除对fitPanelHeight
的调用可以解决该异常,并且此代码在Chrome中运行时不会发生意外。因此,鉴于我不能/不想修复那个框架,有人可以建议一种方法,通过该方法可以一次设置容器的高度,从而避免所有这些废话吗?>
作为参考,我正在使用C#6运行Ext.NET 4.1.0和Ext.JS 6.0.2。