2010-08-04 46 views
12
var store = new Ext.data.JsonStore({ 
    id:'jfields', 
    totalProperty:'totalcount', 
    root:'rows', 
    url: 'data.php', 
    fields:[{ name:'jfields' }, 
      { name:'firstyear' , mapping :'firstyear' , type:'float' }, 
      { name:'secondyear', mapping :'secondyear', type:'float' }, 
      { name:'thirdyear' , mapping :'thirdyear' , type:'float' }, 
      { name:'fourthyear', mapping :'fourthyear', type:'float' }, 
      { name:'fifthyear' , mapping :'fifthyear' , type:'float' } ] 

    }              
}); 

我想要的是在此商店的最后添加数据,但我完全困惑,我所做的是将以下代码添加到它但不工作。
如何在json-store中添加记录

listeners: { 
    load : function(){ 
     BG_store.add([{"jfields":"Monthly","firstyear":22.99,"secondyear":21.88,"thirdyear":21.88,"fourthyear":22.99,"fifthyear":21.88}]); 
    } 
} 

但我不认为我的概念被清除,请任何机构表现出一定的方式如何做到这一点。

回答

18

您需要定义一个记录类型,创建它,并在它,如:

TaskLocation = Ext.data.Record.create([ 
    {name: "id", type: "string"}, 
    {name: "type", type: "string"}, 
    {name: "type_data", type: "string"}, 
    {name: "display_value", type: "string"} 
]); 

然后:

var record = new TaskLocation({ 
    id: Ext.id(), 
    type: "city", 
    type_data: "", 
    display_value: "Brighton" 
}); 

然后:

my_store.add(record); 
my_store.commitChanges(); 

的时候记住数据在商店中的格式与您发送它的格式不同,但在Record对象中。

+0

thanyou非常多LIoyd,我也想出了一种方法,我也加了我的答案,再一次谢谢你 – 2010-08-04 16:59:43

5

我也想通了一个简单的解决这个:

listeners: { 
    load: function(xstore , record , option) { 
     var u = new xstore.recordType({ jfields : 'monthly' }); 
     xstore.insert(record.length, u); 
    } 
} 

在这里我必须补充的是,这个监听器当数据被载入它会创建记录类型和u可以添加字段的数据很多都是你想要的

6

查看JsonStore中的recordType属性。这是一个可以用作所讨论商店的记录构造函数的函数。像这样使用它:

var newRecord = new myStore.recordType(recordData, recordId); 
myStore.add(newRecord);