Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   select элемента (https://javascript.ru/forum/extjs/25284-select-ehlementa.html)

Tim 31.01.2012 17:48

select элемента
 
Есть окно в котором Grid с тулбаром. Нужно активировать и деактивировать кнопки. Сейчас делаю так: присваиваю каждой кнопке id и использую ф-ю Ext.getCmp:
grid.getSelectionModel().on('selectionchange', function(sm){
	
	Ext.getCmp('id').setDisabled(sm.getCount() < 1);
});

Существует какой-то более красивый способ? Хочется как-то так grid.child(1)

nekto_O 31.01.2012 22:00

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>пример</title>
<script type='text/javascript' src='http://docs.sencha.com/ext-js/4-0/extjs/ext-all.js'></script>
<link rel="stylesheet" type="text/css" href="http://docs.sencha.com/ext-js/4-0/extjs/resources/css/ext-all.css">
<script>
Ext.onReady(function() {
var data = [
    {
        id: 1,
        name: 'Andrew',
        age: 20
    }, {
        id: 2,
        name: 'Alex',
        age: 43
    }
];
    
var store = Ext.create('Ext.data.Store', {
    data: data,
    autoLoad: true,
    fields: [
        { name: 'id', type: 'int' },
        { name: 'name', type: 'string' },
        { name: 'age', type: 'int' },
        { name: 'orders' }
    ]
});
 
var grid = Ext.create('Ext.grid.Panel', {
    title: 'Demo',
    tbar: [
      { xtype: 'button', text: 'Button 1' },
      { xtype: 'button', text: 'Button 2' },
      { xtype: 'button', text: 'Button 3' }
    ],
    renderTo: Ext.getBody(),
    store: store,
    columns: [
        { dataIndex: 'id', hidden: true, hideable: false },
        { dataIndex: 'name', header: 'Name' },
        { dataIndex: 'age', header: 'Age', flex: 1 }
    ]
});
grid.getSelectionModel().on('selectionchange', function(sm){
    // Находим все баттоны
    var buttons = grid.query('button'),
        rec = sm.getLastSelected();
    // Например:
    buttons[0].setDisabled(rec.get('age')>20);
});
});
</script>
<body>
</body>
</html>

Tim 01.02.2012 11:08

Спасибо. Только всё равно тут query хоть и из меньшего объёма элементов. Неужели не существует такого способа: grid.panel[0].button[0]

nekto_O 01.02.2012 11:42

Цитата:

Сообщение от Tim
Только всё равно тут query хоть и из меньшего объёма элементов

ну можете например отдельно создать тулбар:
var tbar = Ext.create('Ext.toolbar.Toolbar', {
    items: [
        { xtype: 'button', text: 'Button 1' },
        { xtype: 'button', text: 'Button 2' },
        { xtype: 'button', text: 'Button 3' }
    ]
});

а затем работать напрямую с ним:
var elems = tbar.getRefItems();

Tim 01.02.2012 15:33

nekto_O,
спасибо за помощь


Часовой пояс GMT +3, время: 08:02.