barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

четверг, 22 декабря 2011 г.

YUI: изменение положения editor`а поля на экране

Иногда editor поля таблицы DataTable автоматически располагается на экране не лучшим образом (например, при использовании YAHOO.widget.DropdownCellEditor с очень длинными вариантами выбора может запросто вылезти за пределы экрана, вызвав появление горизонтальной прокрутки). Можно динамически корректировать его положение в момент его появления на экране (ведь статически задать его положение стилями не всегда возможно) следующим образом:
1) Подписаться на событие 'showEvent' editor`а:
myDataTable.getColumn('myColumn').editor.subscribe('showEvent',myHandler)
2) В myHandler editor будет доступен как this, что позволит манипулировать его стилями (например, сделать так, чтобы он расположился в 10 пикселях от правого края экрана):

this.getContainerEl().style.left = YAHOO.util.Dom.getViewportWidth() -     YAHOO.util.Dom.getRegion(this.getContainerEl()).width-10 + "px";
Надо иметь ввиду, что на момент генерации события 'showEvent' элемент на странице уже появился (это верно для FF, неверно для IE), что может повлиять на некоторые параметры (например, на ширину документа, если элемент вылезает за правый край).   

Комментариев нет:

Отправить комментарий