我有窗口,按钮输入,我需要从表格中获取数据的几个字段,按钮上有方法:
enter: function (button) {
var win = button.up('window'),
form = win.down('form'),
record = form.getRecord(),
values = form.getValues();
record.set(values);
win.close();
this.getUsersStore().sync();
此处记录未定义。我做错了什么? ////////////////////////////////////////////////// //////////////////
这里的表格是:
Ext.define('ExtMVC.view.portlet.Login', {
extend: 'Ext.window.Window',
alias: 'widget.login',
layout: 'fit',
title: 'LogIn',
width: 300,
height: 150,
autoShow: true,
store: 'LoginModels',
initComponent: function () {
this.items = [
{
xtype: 'form',
items: [
{
xtype: 'textfield',
name: 'Name',
fieldLabel: 'Name',
style: { 'margin': '10px' },
},
{
xtype: 'textfield',
name: 'Password',
fieldLabel: 'Password',
style: { 'margin': '10px' },
}
]
}
];
this.buttons = [
{
text: 'Enter',
action: 'enter',
//handler: this.enter
},
{
text: 'Cancel',
scope: this,
handler: this.close
},
{
text: 'Sing in',
scope: this,
handler: this.close
}
];
this.callParent(arguments);
}
});
答案 0 :(得分:1)
尝试替换此代码
values=form.getForm().getValues();
答案 1 :(得分:1)
请仔细阅读ext文档:
getRecord():Ext.data.Model: 如果通过loadRecord加载了一个Ext.data.Model实例,则返回当前加载的Ext.data.Model实例。
如果是您的示例,我没有看到任何使用loadRecord()加载表单面板的代码。
enter: function (button) {
var win = button.up('window'),
form = win.down('form'),
//record = form.getRecord(), /*not required here*/
record = this.getUsersStore().findRecord('id', 1) /*if you know id or some thing which field is know*/
values = form.getValues();
record.set(values);
win.close();
this.getUsersStore().sync();
答案 2 :(得分:0)
在通过form.getRecord()获取表单之前,必须使用form.loadRecord()加载表单,否则form.getRecord()将返回undefined。