Как ограничить выбор в строке данных?

Я хочу отключить строку с данными. В таком случае я вижу два необходимых шага:

  • установить CSS
  • предотвратить выбор

Я успешно выполнил первый шаг с соответствующими методами Webix:

function disableRow(table, row){
  table.addRowCss(row, "disabled-row")
};

webix.ui({
  view:"datatable",
  id:"mytest",
  ...
}); 

disableRow($$("mytest"), 2)

http://webix.com/snippet/e47b4257

Но как я могу ограничить выбор этой строки? Спасибо


person Bashkim Jaka    schedule 05.12.2016    source источник


Ответы (4)


Я нашел ответ, который вы ищете здесь

Для строк нет свойства disabled, но вы можете использовать события onBeforeSelect и onBeforeEditStart, чтобы предотвратить связанные действия с конкретной строкой:

На приведенной выше странице есть ссылка на этот фрагмент, который делает то, что вы ищете.

webix.ui({
    view:"datatable", autoConfig:true, editable:true, data:grid_data,
        on:{
            onBeforeEditStart:function(id){
                if (id.row == 2 ) return false
            },
            onBeforeSelect:function(id){
                if (id.row == 2 ) return false
            } 
        }
});
person BubbleHulk    schedule 05.12.2016
comment
Пожалуйста, добавьте текст своего ответа в этот пост, это бесполезно, если связанные страницы перемещаются или закрываются. Пожалуйста, ознакомьтесь с FAQ по этой теме. - person Alexander Kludt; 05.12.2016

Кажется, что может не быть встроенного способа отключить строку. Мне попался этот фрагмент кода, который может помочь

После этого я попытался программно выбрать строку, и это не позволит вам.

webix.ui({
  view:"datatable", id:"abc",autoConfig:true, editable:true, data:grid_data,
  on:{
    onBeforeEditStart:function(id){
      if (id.row == 2 ) return false
    },
    onBeforeSelect:function(id){
     if (id.row == 2 ) return false
    }
  }
});

$$("abc").select(2);
alert($$("abc").getSelectedId())
$$("abc").select(3);
alert($$("abc").getSelectedId())
person amadan    schedule 05.12.2016

Используйте !important для переопределения стилей таблицы:

<style>
 .disabled-row {
   background-color: #ddd !important;
   color: #aaa !important;
 }
</style>

http://webix.com/snippet/1a3569c6

person Mike    schedule 05.12.2016
comment
Да, но даже сейчас строку можно выбрать программно: webix.com/snippet/21a310f5 - person Bashkim Jaka; 05.12.2016

Чтобы отключить любую функцию, предоставляемую webix, вы можете переопределить ее события и обработать то же самое: например, чтобы остановить выбор в любом конкретном столбце, строке или ячейке, вы можете переопределить onBeforeSelect и вернуть false для этой конкретной строки/столбца/ячейки.

Есть события для всего, т.е. onBeforeSelect,onAfterSelect,onBeforeEditStop, onAfterEditStop и т.д.

person Gagan Bansal    schedule 06.11.2017