Flashdown
24.04.2007, 17:23
Доброе утро/день/вечер :)
Мне надо создать такой компонент на основе DataGrid чтобы данные в нем разбивались по группам (группа - несколько строк, объединенных каким то значением). Перед первой строкой группы должна быть строка, содержащая элементы управления для скрытия/отображения строк группы и отображения информации о ней. Только эти элементы должны быть на всю строку, а не в одной ячейке, что собственно и вызывает проблему - как разместить данные на всю строку!
Пока я придумал только 2 варианта:
1) Накладывать поверх строки непрозрачный Canvas и в нем размещать необходимые элементы управления. Минусы - придется это делать в абсолютных координатах и поэтому сложновато будет сделать чтоб канвас попадал именно на нужную строку.. И скрывать/отображать строки группы будет проблематично... И вообще, это не очень красивое решение :)
2) Сделать этот компонент из нескольких таблиц, чтобы каждая группа была в своей таблице. Например в VBox поместить таблицу, состоящую только из заголовка, потом компонент растянутый на всю ширину таблицы, отображающий информацию о следующей группе, далее таблицу без строки заголовка, содержащую данные первой группы, и т.д. Но тут минус - сложно синхронизовать таблицы (например изменение размеров колонок), их общую ширину и т.д.
Может как-нибудь можно просто объединить ячейки в одной из строк и поместить туда данные? Ну типа как в HTMLe - <td colspan="5">...</td>
Примерно что должно получиться - в аттаче
:wacko:
Мне надо создать такой компонент на основе DataGrid чтобы данные в нем разбивались по группам (группа - несколько строк, объединенных каким то значением). Перед первой строкой группы должна быть строка, содержащая элементы управления для скрытия/отображения строк группы и отображения информации о ней. Только эти элементы должны быть на всю строку, а не в одной ячейке, что собственно и вызывает проблему - как разместить данные на всю строку!
Пока я придумал только 2 варианта:
1) Накладывать поверх строки непрозрачный Canvas и в нем размещать необходимые элементы управления. Минусы - придется это делать в абсолютных координатах и поэтому сложновато будет сделать чтоб канвас попадал именно на нужную строку.. И скрывать/отображать строки группы будет проблематично... И вообще, это не очень красивое решение :)
2) Сделать этот компонент из нескольких таблиц, чтобы каждая группа была в своей таблице. Например в VBox поместить таблицу, состоящую только из заголовка, потом компонент растянутый на всю ширину таблицы, отображающий информацию о следующей группе, далее таблицу без строки заголовка, содержащую данные первой группы, и т.д. Но тут минус - сложно синхронизовать таблицы (например изменение размеров колонок), их общую ширину и т.д.
Может как-нибудь можно просто объединить ячейки в одной из строк и поместить туда данные? Ну типа как в HTMLe - <td colspan="5">...</td>
Примерно что должно получиться - в аттаче
:wacko: