ExtJs:在表单面板中将系统日期设置为标签文本

时间:2014-01-04 14:17:26

标签: extjs extjs3

我正在使用ExtJs,我有一个表格如下。

var tourPlanForm = new Ext.form.FormPanel({
bodyStyle : {
    "background-color" : "#000000",
    "padding" : "10px"
},
layout : {
    type : 'vbox',
    // pack:'end'
    align : 'center'
},
defaults : {
    labelWidth : 140,
    padding : '10 0 0 0'
},

items : [ {
    xtype : 'compositefield',
    labelWidth : 120,
    items : [ {
        xtype : 'label',
        text : 'SystemDate',
        forId : 'myFieldId',
        style : 'marginleft:10px'

    }, ]
}

],
buttons : [ {
    text : 'New',
    handler : function() {

        var sysDate = new Date();
        //alert(sysDate);
        var lbTourCode = Ext.ComponentQuery.query('form > compositefield > label')[1];
        console.log(lbTourCode);
        lbTourCode.setText(sysDate);
    }
}]
});

我的表单有一个新按钮和一个标签。当用户单击新按钮时,我需要将系统日期设置为标签文本。我用过

var lbTourCode = Ext.ComponentQuery.query('form > compositefield > label')[1];
        console.log(lbTourCode);
        lbTourCode.setText(sysDate);

但它不起作用。 Firebug控制台说

Ext.ComponentQuery.query('form > compositefield > label')[1]; not define

如果有人愿意解释这有什么问题以及如何克服这个问题,我将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:2)

数组基于零,可能是您的项目位于:

Ext.ComponentQuery.query('form > compositefield > label')[0]

此外,向组件添加itemId可以使以后查询更容易(在项目数组中还有一个额外的逗号,这可能会导致某些浏览器出现问题):

items : [ {
        xtype : 'label',
        text : 'SystemDate',
        forId : 'myFieldId',
        style : 'marginleft:10px',
        itemId:'myLabelField'
    } ]

稍后通过itemId查询:

var field = Ext.ComponentQuery.query('#myLabelField')[0];