|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
Как-то на форуме подобный вопрос, но он касался внутренней архитектуры Хочу сделать объект для отображения подобн ой таблицы Фамилия имя отчество куча столбцов книги песни постановки ещё пара подобных столбцовИванов Пётр Алексеевич ... Петр-первый \n Обоз \n Сранья как любил тебя \n с днюхой вышел я из тюряги \n любовь-ромашка ... Источником данных является MDTable (типа, Multi Dim - сам придумал и сделал). В ней ячейки содержат либо текст, либо дочернюю таблицу, в которой ячейки содержа либо текст, либ.. (рекурсия) Все клетки - TextBlock, Но при выделении строки она становится редактируемой - в ней все клетки представлены объектами TextBox, Datepicker, ComboBox и даже кнопки (мелкая, с крестиком - для удаления текущей строки) - юзер может редактировать, удалять, добавлять записи. У меня 2 варианта решения: >> На основе DataGrid. Объединение строк путем добавления дочерних таблиц(жуть, все столбцы будут независимыми в таких дочерних таблицах) >> На основе Grid (проблема с добавлением строк в середину, проблема разницы кол-ва дочерних строк в разных столбцах) P.s.,не говорите, будто жуткий интерфейс, Во-первых, там всего таблица 5х5 Во-вторых OLAP (кто не знает олап, можете сводные таблицы в эксель вспомнить) всегда ровно именно в таких таблицах отображается и это самый удобный вариант из всего возможных. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2016, 03:13 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
List<T> ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2016, 04:35 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
мне кажется речь идет о WРF? если да, то DataGrid конечно вариант на много лучше. + там есть вертикальная и гори3онтальная виртуали3ация ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2016, 11:41 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
Уточню. Хочу, чтобы таблица на несколько строк выглядела так Я могу, конечно, внутрь одной ячейки пихать дочерние гриды, но как сделать так, чтобы строки в соседних ячейках коррелировали между собой - пока не придумал. Если есть соображения, рад услышать ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2016, 13:11 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
Charles WeylandУточню. Хочу, чтобы таблица на несколько строк выглядела так Я могу, конечно, внутрь одной ячейки пихать дочерние гриды, но как сделать так, чтобы строки в соседних ячейках коррелировали между собой - пока не придумал. Если есть соображения, рад услышать виртуали3ация важна? особенно по горизонтали? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2016, 14:31 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
а так же какого типа выделение вам нужно в этом гриде? бе3 выделения, построчно, по блочно (то есть блок и все подстроки) или построчно, по ячейкам. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2016, 14:42 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
Roman Mejtesвиртуали3ация важна? особенно по горизонтали? Честно говоря, даж не очень понимаю, что подразумевается под этим словом. Грид нужен только для отображения данных. Если пользователь что-то внесёт, то эти данные напрямую отправляются в мой MDTable. Roman Mejtesа так же какого типа выделение вам нужно в этом гриде? бе3 выделения, построчно, по блочно (то есть блок и все подстроки) или построчно, по ячейкам. Выделение - только текущая ячейка. Добавление новой строки я себе представляю так: Щёлкаешь, например, по "физруку". И под ним появляются ещё ячейки с зауженной высотой - как знак, что туда можно что-то добавить. Наверно, так. Может, в виде кнопки.. Например, это не пустые ячейки, а большая кнопочка. Пока бы с отображением справиться))) А добавление - уже пустяк. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2016, 16:14 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
Charles Weyland, Представленное на картинке представление стандартными средствами не реализуется. Только свой компонент грида с нуля писать. Задача трудоемкая. Может подумаете, как это представит иначе? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2016, 16:37 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
я вижу 2 пути: - ItemsControl - Grid (ColumnHeader) - ScrollViewer - VirtualizationStackРanel - ItemsControl - Grid - Cell - Cell - Cell - Cell В качестве Grid'а можно исполь3овать и свою панель, в которой параметры можно будет Binding'ить. (то есть ра3меры привя3ать к существующим свойствам контрола, либо можно исполь3овать GridSizeSharing, чтоб параметры гридов совпадали. Ну и в Cell надо будет определить всё поведение при выделении и настроить пере ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2016, 16:59 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
я вижу 3 пути: Путь номер 1: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
В качестве Grid'а можно исполь3овать и свою панель, в которой параметры можно будет Binding'ить. (то есть ра3меры привя3ать к существующим свойствам контрола, либо можно исполь3овать GridSizeSharing, чтоб параметры гридов совпадали. Ну и в Cell надо будет определить всё поведение при выделении и настроить переxоды фокуса ячеек. Работы довольно много. Путь номер 2: Делать на ба3е 1 ItemsControl'а, в качестве элементов будут сра3у ячейка, в параметраx который будет сра3у определено иx положение в таблице, а в качестве панели будет выступать своя панель или Grid который будет прокручиваться в ScrollView, такое тоже довольно сложно сделать и не будет работать виртуали3ация. Для этого метода надо будет еще делать свой CollectionView или какой то Wraррer Путь номер 3: Исполь3овать FlowDocument Путь номер 4: Рендерить и обрабатывать всё самому Дла того, чтоб сделать такое нужно xорошо ра3бираться как работает: ItemsControl и его потомки, ItemContainerGenerator, VirtualizingStackPanel, Рanel (Measure, Arrage, Render), ICollectionView ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2016, 17:08 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
hVosttCharles Weyland, Представленное на картинке представление стандартными средствами не реализуется. Только свой компонент грида с нуля писать. Задача трудоемкая. Может подумаете, как это представит иначе? Не, я всё обдумал. Да, подобного компонента нет и задача действитетельно трудоёмкая. Поэтому решил спросить мнения форумчан. Создание собственного компонента для меня задача не новая. Для winforms я уже создал на базе picturebox компонент datagrid, отображающий OLAP куб. Я прямо сурово линиями и "пеинтил". ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2016, 19:27 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
Charles WeylandhVosttCharles Weyland, Представленное на картинке представление стандартными средствами не реализуется. Только свой компонент грида с нуля писать. Задача трудоемкая. Может подумаете, как это представит иначе? Не, я всё обдумал. Да, подобного компонента нет и задача действитетельно трудоёмкая. Поэтому решил спросить мнения форумчан. Создание собственного компонента для меня задача не новая. Для winforms я уже создал на базе picturebox компонент datagrid, отображающий OLAP куб. Я прямо сурово линиями и "пеинтил". ну вот WРF по сути тоже самое только графике рендерная. Можно просто сделать Control, нафигачить Visual об_ектов (тверд. 3нак не работает) в этом контроле, чтоб не рендерить одно и тоже постоянно. Всё будет само рисоваться. Геометрия тут простая. Но это самый трудоемкий путь, много всего надо продумывать и делать прокрутку и т.д. Тогда как на ItemsControl'е можно сделать 3а счет шаблонов и генератора. Но и тут масса подводныx камней. Но 1ый способ самый прои3водительный, а во втором доступны DataTemрlate'ы, что так же очень удобно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2016, 20:11 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
Charles WeylandhVosttCharles Weyland, Представленное на картинке представление стандартными средствами не реализуется. Только свой компонент грида с нуля писать. Задача трудоемкая. Может подумаете, как это представит иначе? Не, я всё обдумал. Да, подобного компонента нет и задача действитетельно трудоёмкая. Поэтому решил спросить мнения форумчан. Создание собственного компонента для меня задача не новая. Для winforms я уже создал на базе picturebox компонент datagrid, отображающий OLAP куб. Я прямо сурово линиями и "пеинтил". Лучше уж взять HTML, трудоёмкость на пару порядков меньше, для реализации подобного, решается довольно легко. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2016, 20:16 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
hVosttCharles Weylandпропущено... Не, я всё обдумал. Да, подобного компонента нет и задача действитетельно трудоёмкая. Поэтому решил спросить мнения форумчан. Создание собственного компонента для меня задача не новая. Для winforms я уже создал на базе picturebox компонент datagrid, отображающий OLAP куб. Я прямо сурово линиями и "пеинтил". Лучше уж взять HTML, трудоёмкость на пару порядков меньше, для реализации подобного, решается довольно легко. FlowDocument, внутри таблицы можно ра3местить UI элементы. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2016, 22:02 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
Только сейчас появилась возможность проанализировать ваши ответы и советы. Roman Mejtesвсё поведение при выделении и настроить пере что-то там явно не дописано... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2016, 00:05 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
а, дописано. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2016, 00:05 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
Charles WeylandP.s.,не говорите, будто жуткий интерфейс, Во-первых, там всего таблица 5х5 Во-вторых OLAP (кто не знает олап, можете сводные таблицы в эксель вспомнить) всегда ровно именно в таких таблицах отображается и это самый удобный вариант из всего возможных. Да мы помним, что Вы пишете на халяву для какой-то одной школы. Вернее даже для одного человека. Что типа дадите, тому он и рад будет :) Вспомнилась "Психбольница в руках пациентов" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2016, 07:46 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
skyANAЧто типа дадите, тому он и рад будет :) Я и сюда выложу. Либо компонент, либо целиком программа может быть кому-то интересна. В общем-то, я её пишу больше с целью ознакомиться с WPF по-человечески и чтобы в этой сфере у меня был небольшой, но законченный проект. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2016, 09:48 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
Charles WeylandЯ и сюда выложу. Либо компонент, либо целиком программа может быть кому-то интересна. В общем-то, я её пишу больше с целью ознакомиться с WPF по-человечески и чтобы в этой сфере у меня был небольшой, но законченный проект. Фармить опыт лучше в направлении того, чем реально пользуются люди. Придумать можно много чего, да что угодно вообще, но истинный путь — это отказываться от лишнего и выкидывать бредовые идеи, оставлять максимально простые и максимально эффективные. В этом и есть опыт, быстрее находить компромиссы, а не любой ценой, правдой и неправдой, до последнего пытаться вкорячить кривой нестандартный интерфейс, который уже заведомо по десятку причин, обречён. Т.е. опыта поднять на таких вещах не получится, а вот потерять время — это да. Чем занимался последние несколько месяцев? Нннуу... пеинтил, понимаешь, нестандартный грид, у которого по сути нет строк (у каждой колонки они сугубо свои) — зачем? Вспомнилось что-то про троллейбус из буханки... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2016, 12:53 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
hVosttНннуу... пеинтил, понимаешь, нестандартный грид А вот это я не по собственной воле делал. Во-первых, напеинтил я за 3 или 4 рабочих дня, а во-вторых, нормального, удовлетворяющего пользователя грида не было. Это был коммерческий проект. На работе делал. hVosttФармить опыт лучше в направлении того, чем реально пользуются люди Вы меня неправильно поняли. Если бы меня это тяготило, я б не делал. Я увлечён программированием и хочется хорошему человеку сделать приятно. И мне приятно будет, если где-то моя программулина пригодилась. Поэтому в любом случае при любом раскладе я этот грид добью) Это всё равно, что человеку, играющему в танчики, говорить, что его танк 70 левел никому, кроме его и его товарища не интересен. Да он и не спорит. Всё равно хочет танк 70 левел. А участникам форума, которые погрузились в вопрос и поделились советами - выражаю огромную благодарность)) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2016, 14:22 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
Charles WeylandskyANAЧто типа дадите, тому он и рад будет :) Я и сюда выложу. Либо компонент, либо целиком программа может быть кому-то интересна. В общем-то, я её пишу больше с целью ознакомиться с WPF по-человечески и чтобы в этой сфере у меня был небольшой, но законченный проект. Всё же, ознакомление с WPF начинать лучше не сразу с создания кастомных замудрёных компонентов, а с использования стандартынх и этого модного MVVM. Ознакомление с WPF - это в первую очередь компоновка, стилизация и шаблонизация данных с байндингами. Потом уже визуальная шаблонизация и полноценные кастомные компоненты. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 00:50 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
Короче, Хвост прав. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 00:50 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
Charles WeylandhVosttНннуу... пеинтил, понимаешь, нестандартный грид А вот это я не по собственной воле делал. Во-первых, напеинтил я за 3 или 4 рабочих дня, а во-вторых, нормального, удовлетворяющего пользователя грида не было. Это был коммерческий проект. На работе делал. hVosttФармить опыт лучше в направлении того, чем реально пользуются люди Вы меня неправильно поняли. Если бы меня это тяготило, я б не делал. Я увлечён программированием и хочется хорошему человеку сделать приятно. И мне приятно будет, если где-то моя программулина пригодилась. Поэтому в любом случае при любом раскладе я этот грид добью) Это всё равно, что человеку, играющему в танчики, говорить, что его танк 70 левел никому, кроме его и его товарища не интересен. Да он и не спорит. Всё равно хочет танк 70 левел. А участникам форума, которые погрузились в вопрос и поделились советами - выражаю огромную благодарность)) Если понадобится совсем кастомный контрол, и шаблонизации данных и представления не хватит, то вам всё равно лучше начать с азов, с байндингов и компоновки. Всё равно придётся в кастомном компоненте прописывать байндинги через прикрепляемые свойства и свойства зависимостей (т. е. и эту тему со свойствами тоже поднять придётся, т. к. это не совсем те свойства, что в обычном ООП применяются). Кстати, могу поделиться кодом, который позволяет удобно и быстро задавать размеры строк и столбцов в Grid (не DataGrid) в смешанном стиле (через числа, звёздочки, auto и дефолтное значение, аналогичное stretch "растянуть до краёв контейнера"): Код: xml 1. 2. 3.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 01:05 |
|
Типа, многомерная таблица. На основе чего ее лучше делать?
|
|||
---|---|---|---|
#18+
Кстати, если намешивать звёздочки и другие задания размера, то звёздочки будут делить только остаток свободного места от всех остальных размеров. Т. е. если всего доступно, например, ширины 500 единиц, а задано "450, 8*, 2*", то звёздочки разделят 500-450=50 единиц ширины в отношении 40 к 10. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2016, 01:17 |
|
|
start [/forum/topic.php?fid=20&msg=39319976&tid=1400315]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 164ms |
0 / 0 |