Как изменить значение компонента текстового поля extJS внутри панели extJS? - PullRequest
2 голосов
/ 20 августа 2011

Я здесь с таким простым вопросом, но не смог его найти ... во всяком случае, ниже вы можете увидеть код.Это панель с элементами внутри.То, что я хочу, это изменить значение текстового поля с именем 'intIP', это внутри панели, которая находится внутри панели.Как я могу это сделать?Я нашел информацию о формах (метод .getForm, но на панели его нет)

Заранее большое спасибо

http://jobtask.h19.ru/ - панель

var resultsPanel = Ext.create('Ext.panel.Panel', {
    title: title,
    renderTo: document.body,
    layout: {
        type: 'vbox',
        align: 'stretch',
    },
    items: [{
        title: 'Details',
        name: 'detPanel',
        items: [{
            name: 'intIP',
            fieldLabel: 'internal IP',
            xtype: 'textfield',
            readOnly: true
        }],
    }]
});

Ответы [ 3 ]

7 голосов
/ 20 августа 2011

В ExtJS 4 вы должны иметь возможность использовать метод Ext.Container.query(), который при передаче правильного селектора будет возвращать массив дочерних компонентов, соответствующих селектору.

resultsPanel.query('textfield[name="intIP"]')[0].setValue('New value')

Подробности о том, как создавать селекторыздесь: http://localhost/ext-4.0.2/docs/index.html#/api/Ext.ComponentQuery


В ExtJS3: Каждый Ext.Container имеет метод find(), который может быть задан как имя свойства (name, xtype, itemId и т. д.)и значение ('intP', 'textfield', 'fieldId').Он вернет массив компонентов chlderen (на любом уровне вложенности), где свойство имеет указанное значение.Если в вашем контейнере только одно поле имеет имя 'intP', то вы можете просто использовать:

resultsPanel.find('name','intP')[0].setValue('New value')

В ExtJS3 и ExtJS4, если у вас есть несколько дочерних компонентов с одинаковым именем, используя дополнительное уникальное свойствовроде itemId должно помочь.

2 голосов
/ 20 августа 2011

Укажите itemId для текстового поля и используйте resultsPanel.getComponent('itemId').setValue('Value')

Здесь itemId будет ограничено областью действия панели, в отличие от id, который может использоваться глобально

Вы также можете использовать resultsPanel.query('#itemId') или resultsPanel.down('#itemId')

Проверьте документы , который подходит вам лучше всего

0 голосов
/ 20 августа 2011

Если вы собираетесь поместить поля ввода в панель, тогда подумайте об использовании Ext.form.Panel. На панели формы есть методы для поиска компонентов ввода, например findField.

...