我正在尝试从c#controller中的网格中获取值。这是我的商店和网格
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)
}
})
我的问题是我如何从列电话获取所有值来更新我的sql数据库。我是否使用某种数组或是否有一种方法可以将“phone”列的所有值存储在数据库中
答案 0 :(得分:2)
你这样做是错误的。首先,您应该始终为模型提供一个[idProperty][1]
属性,并且您应该始终使用模型!现在,如果你没有定义模型,商店将使用隐式模型,如果你没有定义idProperty
,默认情况下它将是'id'。
现在让我们假设您拥有所有这些:
如果您随后添加或编辑绑定到商店(添加或加载到商店)的该类型的模型实例(记录),您可以提交所有已更改(具有脏字段)或新增(通过幻像)的实例(记录)在商店调用sync()
。代理将需要一个适当的编写器。在这种情况下,您可以将写入配置为[allowSingle][2]
设置为false,以强制编写器始终将记录的数组(列表)发送回服务器,否则您可能会在控制器上反序列化错误。
如果您只是发送电话号码,您的情况听起来有点不常见,您怎么知道哪个电话号码属于谁?无论如何,如果您按照上述方式执行此操作,您可以采用正确的方式,并且您仍然可以决定在服务器上使用哪些字段。
注意:如果在模型上定义代理,则无需定义代理 再次在商店里。
<强>更新强>
要获取一种字段类型并发送它,您可以执行(未经测试)
var emails = store.collect('email');
Ext.Ajax.request({
url: 'page.php',
jsonData: emails,
success: function(response){
var text = response.responseText;
// process server response here
}
});