Изменение цвета выделенных строк
Никак не пойму как изменить цвет выделенных ячеек...вроде задача-то не сложная...
Ext.getCmp('id_w_mtr') - это grid. Ext.getCmp('id_w_mtr').selModel.on('rowselect',function(sm, rowIdx, r){ sm.style.background='red'; }); Это конечно точно не так. Но как же добраться до стиля? Использую 3 версию Ext |
Так вроде они css-класс получают особый. Настрой свой css.
|
мне надо,чтобы при клике на строку менялся её стиль! дизайн в css я настрою,но мне надо при клике фон менять! фон строк,на которые нажимаю
|
Цитата:
|
ну пусть будет при клике,это неважно. главное сделать другой фон у строки,на которую нажал. в джава скрипт я бы событие на tr повесил и изменил бы значение style.background. а здесь так не получается,не пойму как добраться до объекта,которому менять background.
|
Ты че чудишь? Это дефолтое поведение гридов в ExtJS - по клику идет выделение строки. В Ext4 синеньким выделяется. В Ext3 мож другим цветом.
|
о,боги!)))профессор,какой ты потешный))раскрыл глаза мне на истину) у меня чекбоксмодэл. я выделяю несколько позиций. жму кнопку и эти отмеченные строки должны изменить фон. вот и всё,не хотел грузить лишними рассказами,но коли надо...:)
|
Засел с какой-то ерундой, аж самому противно...
вот как делаю (точнее сказать буду делать что-то наподобие): var c=Ext.getCmp('id_w_mtr').selModel.getSelections(); var lCheckModif=Ext.getCmp('id_w_mtr').store.getCount(); for (var j=0;j<lCheckModif;j++){ Ext.fly(Ext.getCmp('id_w_mtr').getView().getRow(j)).addClass('error'); } Завтра переберу все значения из таблицы на равенство с выделенными чекбоксами. Те записи, которые совпадут, отправлю в Ext.fly(Ext.getCmp('id_w_mtr').getView().getRow(j) ).addClass('error'); Вроде команда Ext.fly(Ext.getCmp('id_w_mtr').getView().getRow(0)).addClass('error'); работает сносно и меняет стиль для первой строки. А стало быть меняет фон, прописанный в css для класса 'error'. Всё конечно крайне кривенько, но...может кому-то мои догадки помогут. Надеюсь, завтра напишу окончательный вариант. |
Так в чем конкретно задача? Нужно просто поменять дефолтный стиль для выбранных строк? Или менять стиль выделенных строк при определенном событии (например нажатии кнопки), иными словами не всегда?
Если первый случай, то советую создать свой компонент унаследованный от стандартного грида и переопределить его sass. Если второй, то тоже создаем свой компонент, стиль не переопределяем, а создаем новое правило. По событии берем выделенные строки и добавляем нужный класс. |
Цитата:
|
а если по теме то, судя по доке, вот так можно http://docs.sencha.com/extjs/3.4.0/#...od-getRowClass
viewConfig определяешь на гриде ..в функции в зависимости от данных определешь как рендерить |
Цитата:
Собственно мне нужно было всего лишь узнать как поменять цвет фона строк при выборе (по чекбоксу, например). Этого бы было достаточно. Решение нашёл. Может оно и не самое оптимальное...вот оно: В своей CSS прописываю класс: Код:
.selpo{ var mtrdse=Ext.getCmp('id_w_mtr').selModel.getSelections(); // Выбор всех отмеченных позиций var ind=''; // пропускаю через циклы массив отмеченных позиций и массив вообще всех позиций из таблицы Ext.each(mtrdse, function(record) { for (var j=0;j<Ext.getCmp('id_w_mtr').store.getCount();j++){ // при совпадении меняю стиль и, когда чекбокс будет снят, увидим изменившийся цвет отмеченной ранее строки if (Ext.getCmp('id_w_mtr').store.data.items[j].data.pp0062==record.data.pp0062){ // нахожу индекс отмеченной строки ind=Ext.getCmp('id_w_mtr').store.find('pp0062',Ext.getCmp('id_w_mtr').store.data.items[j].data.pp0062,0,false,false); // присваиваю новый стиль с новым фоном Ext.fly( Ext.getCmp('id_w_mtr').getView().getRow(ind) ).addClass('selpo'); } } }) |
А если самый простой вариант попробовать, просто переопределить класс .x-grid-item-selected ?
|
Часовой пояс GMT +3, время: 05:55. |