代码之家  ›  专栏  ›  技术社区  ›  Sarge

使用空数组初始化GridPanel和ArrayStore不起作用

  •  1
  • Sarge  · 技术社区  · 16 年前

    当我用一些数据初始化我的ArrayStore时,我可以插入新的记录,并且所有内容都正确显示。但是,如果我用空数组初始化ArrayStore,那么当插入的第一条记录工作时,每次后续插入都会覆盖网格中的第一条记录。

    那我做错什么了?

    var myData = [
        // Initializing with the following element works.
        //['Hyannis Connector',3456.9,'Hyannis Connector Bridle Path','Hyannis Connector/Baden Powell'],
        // Initializing with this element works but leaves an empty row in the grid..
        //[]
    ];
    
    // create the data store
    segmentStore = new Ext.data.ArrayStore({
        fields: [
           {name: 'trailName'},
           {name: 'segmentLength', type: 'float'},
           {name: 'startJunction'},
           {name: 'endJunction'},
        ]
    });
    
    // manually load local data
    segmentStore.loadData(myData);
    
    // create the Grid
    segmentGrid = new Ext.grid.GridPanel({
        region: 'south',
        store: segmentStore,
        columns: [
            {header: 'Trail Name', width: 140, sortable: true, dataIndex: 'trailName'},
            {header: 'Segment Length', width: 75, sortable: true, dataIndex: 'segmentLength'},
            {header: 'Start Junction', width: 75, sortable: true, dataIndex: 'startJunction'},
            {header: 'End Junction', width: 75, sortable: true, dataIndex: 'endJunction'},            
        ],
        stripeRows: true,
        height: 150,
        width: 600,
        title: 'Trail Segments in Route',
        layout: 'fit'      
    });
    
    var defaultData = {
                trailName: segment.getTrailName(),
                segmentLength: segment.getLength(),
                startJunction: '',
                endJunction: ''
            };
            var recId = 3; 
            var p = new segmentStore.recordType(defaultData, recId); 
            segmentStore.insert(0, p);
    
    1 回复  |  直到 16 年前
        1
  •  -1
  •   Sarge    16 年前

    ExtJS论坛提供了答案。