我试图从我的c#控制器中的一个网格中获取值。这是我的存储和网格
Ext.create('Ext.data.Store', {
storeId:'store',
fields:['name', 'email', 'phone'],
proxy: {
type: 'memory',
reader: {
type: 'json',
root: 'items'
}
}
});
Ext.create('Ext.grid.Panel', {
store: Ext.data.StoreManager.lookup('store'),
columns: [
{ text: 'Name', dataIndex: 'name' },
{ text: 'Email', dataIndex: 'email', flex: 1 },
{ text: 'Phone', dataIndex: 'phone' }
],
height: 200,
width: 400,
renderTo: Ext.getBody()
});
这就是我尝试将网格值传递给控制器的方式
var records = [];
this.store.data.each(function(rec) {
records.push(rec.data);
});
Ext.Ajax.request({
url: 'mycontroller/read_grid',
params: {
par1: Ext.encode(records)
}
})
我的问题是如何从phone列中获取所有的值来更新我的sql数据库。我是否使用某种数组或是否有一种方法来获取“phone”列中的所有值以存储在数据库中
2条答案
按热度按时间xdnvmnnf1#
你的方法不对。首先你应该总是有一个模型的
[idProperty][1]
属性,并且你应该总是使用模型!现在如果你没有定义模型,商店将使用隐式模型,如果你没有定义idProperty
,它将默认为'id'。**现在让我们假设您拥有所有这些:**如果您随后添加或编辑绑定到存储区(添加或加载到存储区)的该类型的模型示例(记录),则可以通过在存储区上调用
sync()
来提交所有已更改(具有脏字段)或新的(为幻像)的示例。代理将需要一个适当的编写器来完成此操作。在您的情况下,可以将[allowSingle][2]
设置为false来配置写入,以强制编写器始终将记录数组(列表)发送回服务器,否则您可能会在控制器上遇到反序列化错误。你的情况听起来有点不寻常的原因,如果你只是发送电话号码,你怎么能知道哪个电话号码属于tho谁?无论如何,如果你这样做,就像上面描述的,你有它的正确方式,你仍然可以决定哪些字段,你需要在服务器上。
注意:如果在模型上定义代理,则不需要在存储上再次定义相同的代理。
更新
要只获取一个字段类型并发送它,您可以执行以下操作(未测试)
有关详细信息,请参阅收集&请求
kq4fsx7k2#