如何更改Textfield值每次窗口显示

时间:2017-01-11 07:24:40

标签: extjs

我正在为我的应用程序使用ExtJs。我做了一个窗口,里面有一些字段。一个字段是每次窗口显示时更改的名称。 但由于我没有销毁按钮上的窗口,因此单击它不会再次渲染并仅显示以前的数据。我如何确定新数据。

我的代码

表单中的My Field代码位于窗口

 items: [
    {
        xtype: 'combobox',
        name: 'Assigned To',
        queryMode: 'local',
        store: this.getResourceStore(),
        displayField: 'svmx_name',
        labelAlign: 'top',
        fieldLabel: 'Assigned_To',
        listeners: {
            scope: this,
            select: function (combo, record, index) {
                var form = display_form.getForm();
                var id = record.getId();
                form.findField('ResourceId').setValue(id);
            },
            afterrender: function (combo, record, index) {
                console.log(this.getResourceName());
                combo.setValue(this.getResourceName());
            },
        }
    },

在窗口中设置字段。

if (!this.win) {
    this.win = Ext.widget({
        xtype: 'editorwindow',
        resourceStore: Ext.getCmp('scheduler1').getResourceStore(),
        eventStore: Ext.getCmp('scheduler1').getEventStore(),
        wrapper: Ext.getCmp('scheduler1').getWrapper(),
        resourceName: targetResource,
        startdate: date,
        targetData: dragSource.data,
    });
}
this.win.show();

1 个答案:

答案 0 :(得分:0)

我将使用config object定义一个自己的窗口类来设置所需的数据。 该框架将为您创建setter和getter函数。

Ext.define(MyFieldsWindow, {
    extend: Ext.window.Window,
    xtype: 'myfieldswindow',
    config: {
        resourceName: '',
        startdate: null,
        targetData: null
    },
}

在更新功能中,将值设置为特定组件。 updateResourceName函数看起来像。

updateResourceName: function (newResourceName, oldResourceName) {
    var resourceNameCmp = this.getComponent('resourceName');
    resourceNameCmp.setValue(newResourceName);
},

现在,您可以在创建实例时设置配置。

if (!this.win) {
    this.win = Ext.create({
        xtype: 'myfieldswindow',
        resourceStore: Ext.getCmp('scheduler1').getResourceStore(),
        eventStore: Ext.getCmp('scheduler1').getEventStore(),
        wrapper: Ext.getCmp('scheduler1').getWrapper(),
        resourceName: targetResource,
        startdate: date,
        targetData: dragSource.data,
    });
}
this.win.show();

或者您可以使用setter方法在运行时设置它。

this.win.setResourceName('Roli Agrawal');

窗口类看起来像。

Ext.define(MyFieldsWindow, {
    extend: Ext.window.Window,

    config: {
        resourceName: '',
        startdate: null,
        targetData: null
    },

    updateResourceName: function (newResourceName, oldResourceName) {
        var resourceNameCmp = this.getComponent('resourceName');
        resourceNameCmp.setValue(newResourceName);
    },

    updateStartDate: function () {/*similar code like above*/ },
    updateTargetDate: function () {/*similar code like above*/ },

    items: [
        {
            itemId: 'resourceName',
            xtype: 'textfield'
        },
        /* additional items*/
    ]
});