记录未定义Extjs4以从表单中获取数据

时间:2014-11-25 14:03:22

标签: extjs extjs4

我有窗口,按钮输入,我需要从表格中获取数据的几个字段,按钮上有方法:

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);


    }
});

3 个答案:

答案 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。