Grid 将extjs 4.0.7迁移到4.1.1的问题

Grid 将extjs 4.0.7迁移到4.1.1的问题,grid,extjs4,scrollbar,extjs4.1,treepanel,Grid,Extjs4,Scrollbar,Extjs4.1,Treepanel,在尝试从extjs 4.0.7切换到4.1.1时,我遇到了一些问题 第一个问题如下: 我有两个树面板,它们在一个列布局中。一个挨着另一个。我的应用程序将一组节点加载到左侧面板中,然后您可以选择将其中一些节点移动到另一个面板中。但是,包含所有节点的面板没有显示滚动条,因此我无法突然看到大约1/3的节点。我在4.0.7中遇到了一个半类似的问题,在我移动另一个节点之前,如果面板已满,我无法看到最后一个节点被移动。我用以下几行代码修复了这个问题: treePanel1.invalidateScrolle

在尝试从extjs 4.0.7切换到4.1.1时,我遇到了一些问题

第一个问题如下:

我有两个树面板,它们在一个列布局中。一个挨着另一个。我的应用程序将一组节点加载到左侧面板中,然后您可以选择将其中一些节点移动到另一个面板中。但是,包含所有节点的面板没有显示滚动条,因此我无法突然看到大约1/3的节点。我在4.0.7中遇到了一个半类似的问题,在我移动另一个节点之前,如果面板已满,我无法看到最后一个节点被移动。我用以下几行代码修复了这个问题:

treePanel1.invalidateScroller();
treePanel2.invalidateScroller();
这些行在4.1.1中被弃用,问题似乎变得更糟。是否有人遇到过类似的问题,以及如何恢复滚动条

与我的UI相关的第二个主要问题:

我在其他地方有两个相邻的网格,布局类似于树面板。我已经在两个网格之间设置了拖放。同样,所有节点都从左侧网格开始,并可以选择将一些节点拖动到右侧网格中。但是,右侧网格现在没有显示为完整大小,它默认为一条细条。因此,DD功能仍然存在,如果您知道将节点拖动到那个小片段的话。然后,棉条膨胀到足以容纳单个节点,依此类推。那么,如何使其恢复默认的全尺寸。为什么extjs 4.1.1会导致这些问题?我必须在任何代码上下功夫,但如果绝对必要的话,我可以。然而,根据我的描述,如果有人熟悉这类问题,那就太好了

编辑:此外,我在网格最右边的列中有一个组合框。当我单击更改其中一个组合框时,会弹出一个小滚动条,它会阻止下拉按钮。他们对这个版本做了什么

这里是布局定义,我遇到了第一个问题,滚动条在需要时不会显示在面板上:

{
    xtype: 'panel',
    title: 'Select fields',
    defaults: {
        border: false,
        height: '100%'
    },
    layout: 'column',
    items: [

        {
        xtype: 'treepanel',
        itemID: 'choicesTreePanel',
        title: 'Choose from below fields',
        height: '100%',
        multiSelect: true,
        store: choicesTree,
        rootVisible: false,
        columnWidth: .44},

    {
        xtype: 'panel',
        columnWidth: .06,
        layout: {
            type: 'vbox',
            align: 'center'
        },
        defaults: {
            margins: "15 0 0 0"
        },
        items: [
            {
            xtype: 'button',
            text: '==>'},
        {
            xtype: 'button',
            text: '<=='},
        {
            xtype: 'button',
            text: 'RST'}

             ]},
    {
        xtype: 'treepanel',
        itemId: 'chosenTreePanel',
        title: 'Fields',
        border: true,
        store: chosenFields,
        rootVisible: false,
        columnWidth: .44,
        viewConfig: {
            plugins: {
                ptype: 'treeviewdragdrop,
        dragText:'
                dragginggggg '
        },
        ddGroup: '
                fieldsDD '        
        }
        },
        {xtype:'
                panel ',
        columnWidth:.06,
        layout:{
        type:'
                vbox ',
        align:'
                center '
        },
        items: [
            {
            xtype: '
                button ',
            text: '
                UP '},
        {
            xtype: '
                button ',
            text: '
                DOWN '}

             ]
        }

        ]
 }
{
xtype:'面板',
标题:“选择字段”,
默认值:{
边界:错,
身高:“100%”
},
布局:“列”,
项目:[
{
xtype:'树面板',
itemID:“ChoiceTreePanel”,
标题:“从以下字段中选择”,
高度:“100%”,
多选:对,
商店:精选树,
rootVisible:false,
列宽度:.44},
{
xtype:'面板',
列宽:.06,
布局:{
键入:“vbox”,
对齐:“居中”
},
默认值:{
页边距:“15 0 0”
},
项目:[
{
xtype:'按钮',
文本:'==>'},
{
xtype:'按钮',
文本:“(也许最好将您的问题分成多个独立的问题)

关于面板高度和滚动条的第一个问题:

在您的示例中,我会问自己这样一个问题:“我希望树面板的高度与什么相关?”

当您不关心与其父元素相关的子元素的高度时,通常使用列布局:子元素的高度之和定义了列的高度,如您在此处所见:

您没有在列上定义任何高度,因此它使用子元素的高度(在您的示例中没有高度)。我不知道Ext在这种情况下做了什么,但基于此,它不能做任何聪明的事情

如果希望树面板使用包含面板的整个高度,可以使用“对齐”属性设置为“拉伸”的hbox布局。 这可能也会修复滚动条,因为可以正确地进行高度计算。 不要忘记删除“height:100%”和“autoscroll”属性,因为它们会混淆内容

最后,将树面板的布局更改为“适合”可能会得到您想要的结果

您的代码可能会变成:

{
    xtype: 'panel',
    layout: {
        type: 'hbox',
        align: 'stretch'
    },
    items: [{
        xtype: 'treepanel',
        layout: 'fit',
        flex: 44,
        ...
    }, {
        flex: 6,
        ...
    },{
        flex: 44,
        ...
    }]
}

我没有在你的代码上测试这个答案。请提供完整的工作代码示例(带有虚拟存储)我将对其进行测试。

尽管您正在寻找基于百分比的高度解决方案,但也可以使用定值高度。在许多情况下,这将避免您的问题。例如,将面板高度设置为600,这将解决滚动条问题


这并不能解决您在基于百分比的布局中的问题。希望其他人能提供帮助。

补充说明:我认为您的问题与4.1中的错误没有多大关系,而是由于此版本中的布局渲染更好。