Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs 如何优化向视图中添加组件?_Extjs_Extjs5 - Fatal编程技术网

Extjs 如何优化向视图中添加组件?

Extjs 如何优化向视图中添加组件?,extjs,extjs5,Extjs,Extjs5,首先,我有大约1000-1500条记录,我需要以自定义样式在网格中显示它们。但是,第一行必须包含复选框和一个表单(combo,textfield),该表单位于该复选框下方。 类似于: row1: checkbox combo, textfield, textfield row2: checkbox combo, textfield, textfield ... 所以,我不能在这种方法中使用网格(因为我必须对每一行使用“ColumRender函数”,即使更改一行,也会导致

首先,我有大约1000-1500条记录,我需要以自定义样式在网格中显示它们。但是,第一行必须包含复选框和一个表单(combo,textfield),该表单位于该复选框下方。 类似于:

row1: checkbox
      combo, textfield, textfield
row2: checkbox
      combo, textfield, textfield
...
所以,我不能在这种方法中使用网格(因为我必须对每一行使用“ColumRender函数”,即使更改一行,也会导致重新渲染整个网格)

这就是我尝试将每个组件动态添加到面板的原因。但主要的问题是,每当我向面板添加组件时,都会花费太长的时间。例如,只有100条记录需要4.5秒。我甚至无法想象1500张唱片需要多长时间

请检查一下这把小提琴。你会明白确切的问题。请不要忘记检查控制台。时间:

和示例代码:

console.time('FakeGrid');
        Ext.suspendLayouts();
        var fakeGrid = Ext.create('Ext.panel.Panel', {
            title: 'Fake grid Panel',
            renderTo: Ext.getBody(),
        });



        var records = [];
        for(var i=0; i < 10; i++) {
            records.push({
                id: 'Check'+ i,
                reg: 'Reg' + i
            })
        }

        Ext.each(records, function(rec) {
            var regionPanel = {
              xtype: 'fieldset',
              collapsible: true,
              border: false,
              title: rec.reg,
              layout: 'vbox',
              items: []
            };
            Ext.each(records, function(rec) {
                var hBoxPanel = {
                  xtype: 'panel',
                  layout: 'hbox',
                  items: [{
                    xtype: 'checkbox',
                    boxLabel: rec.id
                  }]
                };
                var fakeSubPanel = Ext.create('Ext.panel.Panel', {
                    layout: 'hbox',
                    items: [{
                        xtype: 'combobox',
                        fieldLabel: 'Combo'
                    }, {
                        xtype: 'textfield',
                        fieldLabel: 'field1'
                    }, {
                        xtype: 'textfield',
                        fieldLabel: 'field2'
                    }] 
                });
                var sitePanel = {
                  xtype: 'panel',
                  layout: 'vbox',
                  //margin: '5 0 0 31',
                  items: [hBoxPanel, fakeSubPanel]
                };
                regionPanel.items.push(sitePanel);
            }); //Ext.each
            fakeGrid.add(regionPanel);
        }); //Ext.each

        Ext.resumeLayouts(true);
        console.timeEnd('FakeGrid');
console.time('FakeGrid');
Ext.suspendLayouts();
var fakeGrid=Ext.create('Ext.panel.panel'{
标题:“假网格面板”,
renderTo:Ext.getBody(),
});
var记录=[];
对于(变量i=0;i<10;i++){
记录。推送({
id:'检查'+i,
注册:'注册'+i
})
}
Ext.each(记录、功能(rec){
var区域面板={
xtype:“字段集”,
可折叠的:是的,
边界:错,
标题:rec.reg,
布局:“vbox”,
项目:[]
};
Ext.each(记录、功能(rec){
var hBoxPanel={
xtype:'面板',
布局:“hbox”,
项目:[{
xtype:'复选框',
boxLabel:rec.id
}]
};
var fakeSubPanel=Ext.create('Ext.panel.panel'{
布局:“hbox”,
项目:[{
xtype:“组合框”,
字段标签:“组合”
}, {
xtype:'textfield',
fieldLabel:“field1”
}, {
xtype:'textfield',
fieldLabel:“field2”
}] 
});
var sitePanel={
xtype:'面板',
布局:“vbox”,
//边距:“50 0 31”,
项目:[hBoxPanel,fakeSubPanel]
};
regionPanel.items.push(sitePanel);
});//分机
添加(区域面板);
}); //分机
Ext.resumeLayouts(真);
控制台.timeEnd('FakeGrid');

如果你有什么建议,请告诉我你的想法。非常感谢你

似乎是用户体验问题:-)可能是用户体验问题的一部分。但是,当我将这些记录放入网格时,它会在几秒钟内呈现:)应该是更好的方式,否则我在某处做了一些错误的事情。网格速度更快,但它不会呈现所有记录,它只呈现“可见”记录。我真的不明白使用网格的问题是什么?为什么要使用rendere?对于这些目的,可以使用WiGeGeLead。像这样的“SythHgk。考虑这个帖子:好像是一个UX问题:-”可能是UX问题的一部分。但是,当我将这些记录放入网格时,它会在几秒钟内呈现:)应该是更好的方式,否则我在某处做了一些错误的事情。网格速度更快,但它不会呈现所有记录,它只呈现“可见”记录。我真的不明白使用网格的问题是什么?为什么要使用rendere?你可以为这些目的使用WaveGube。类似这样的话,请考虑这个帖子: