datatable onAfterLoad markSorting

Привет!

Не работает markSorting (не появляется стрелка в заголовке) вот в такой конструкции:

$$(“mydatatable”).attachEvent(“onAfterLoad”, function(){
webix.message(“start sort!!”);
var mygrid1 = $$(“mydatatable”)
mygrid1.markSorting();
mygrid1.sort("#create#",“desc”,“string”);
mygrid1.markSorting(“create”, “desc”);
})

Если навесить тоже самое на кнопку все работает.

Аналогичная конструкция для treetable работает.

Добрый день,

Событие onAfterLoad срабатывает, когда данные загружены в таблицу, но она еще не отрисовалась.

Для того, чтобы отсортировать данные после загрузки, можно воспользоваться ready
свойством в конфигурации datatable http://webix.com/snippet/59676857.

Привет!

Вы будете смеяться но это не помогло. :slight_smile:

Для markSorting и появление стрелочки в заголовке имеет значение на экране ли элемент.

В моем случае элемент находился в tabview на не активной странице.

Поменял страницы в tabview местами и все способы для mydatatable заработали, но перестали работать для treetable которая оказалась не на экране.

Да, именно. markSorting метод добавляет новый HTML элемент для уже существующего.
В случае tabview, элемент находящийся не в активном табе отсутствует в DOM.

Можно попробовать повесить обработчик на событие onAfterRender для изначально скрытого грида, который будет рисовать стрелку, один раз при создании. Для этого нужно использовать webix.once() метод.

on:{
      	"onAfterRender":webix.once(function(){ 
        	webix.message("first time shown");
        	this.markSorting("title", "desc");
		})
      }

http://webix.com/snippet/0c73c36a

То что markSorting не работает для невидимого компонента это баг, он будет исправлен в одном из будущех билдов ( скорее всего в Webix 2.2 )