在Ext.NET / Ext.JS中将容器的高度设置为框架高度

时间:2018-11-01 21:19:34

标签: javascript extjs ext.net

我在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。

0 个答案:

没有答案