Eсть много разнородных объектов разного типа со свойствами разного типа, я хочу забить эти объекты в грид кликать по конкретному объекту, а в другом гриде редактировать его свойства.
Как лучше всего сделать подобное ?
В каком виде данных, каким способом: заполнять грид ? после редактирования выгружать данные?
п.с. совсем недавно в .net и мало чего знаю, ссылки на подходящий в данном случае материал для чтения приветствуется.
Здравствуйте, dmitry-wolf, Вы писали:
DW>Eсть много разнородных объектов разного типа со свойствами разного типа, я хочу забить эти объекты в грид кликать по конкретному объекту, а в другом гриде редактировать его свойства.
DW>Как лучше всего сделать подобное ?
DW>В каком виде данных, каким способом: заполнять грид ? после редактирования выгружать данные?
DW>п.с. совсем недавно в .net и мало чего знаю, ссылки на подходящий в данном случае материал для чтения приветствуется.
У дев экспресса есть компонент TreeView, мне кажется будет удобней раскрывать ветку дерева чем открывать новое окно
Здравствуйте, dmitry-wolf, Вы писали:
DW>Здравствуйте, AlexNek, Вы писали:
AN>>Здравствуйте, dmitry-wolf, Вы писали:
DW>>>Eсть много разнородных объектов разного типа со свойствами разного типа, я хочу забить эти объекты в грид кликать по конкретному объекту, а в другом гриде редактировать его свойства.
DW>>>Как лучше всего сделать подобное ?
DW>>>В каком виде данных, каким способом: заполнять грид ? после редактирования выгружать данные?
DW>>>п.с. совсем недавно в .net и мало чего знаю, ссылки на подходящий в данном случае материал для чтения приветствуется.
AN>>У дев экспресса есть компонент TreeView, мне кажется будет удобней раскрывать ветку дерева чем открывать новое окно
DW>Я не говорю про то что надо открывать новое окно, все происходит в одном окне.
А в чем проблема разместить два propertyGrid-a? Или грид + проперти грид.
Хотя опять таки что то подобное видел в примерах DevExpress-a.
Здравствуйте, dmitry-wolf, Вы писали:
DW>Здравствуйте, AlexNek, Вы писали:
AN>>А в чем проблема разместить два propertyGrid-a? Или грид + проперти грид.
AN>>Хотя опять таки что то подобное видел в примерах DevExpress-a.
DW>Меня волнует в каком виде и каким способом лучше всего запихивать данные в эти гриды и после редактирования данных считывать.
propertyGrid.SelectedObject = data
И больше ничего не нужно если один объект.
DW>биндинги — знаю только название но что это хз.
Это больше для грида и БД
DW>пробегать циклом по всем данным и заполнять строки, ячейки ... ?
ни в коем случае, об этом уже позаботились разработчики грида.
Похоже нужно больше информации, попробую что то типа описания сделать, я уже с этим давно т..юсь
Здравствуйте, dmitry-wolf, Вы писали:
Вот попробовал начать описание гридов. Не знаю правда насколько полезно и правильно будет. Может забыл еще что.
Выбираем редактор для редактирования данных в виде таблиц.
В настоящее время имеется столько различных реализаций ввода и показа данных в виде таблицы, что поначалу просто теряешься в этом лесу. И для выбора нужного редактора необходимо иметь какие-то ориентиры. Давайте попробуем разобраться, что нам нужно учитывать.
Прежде всего, нам нужно точно определиться с данными, какие мы имеем на входе. Давайте разделим все множество на две группы: горизонтальные таблицы и вертикальные таблицы. Если мы хотим использовать данные о группе людей, и информация о каждом человеке будет располагаться в строке таблицы, то мы имеем дело с горизонтальными таблицами. Если же информация о каждом человеке будет располагаться в одном столбце, а имя, фамилия, пол и прочее в строках, то мы имеем дело с вертикальными таблицами. Иными словами, в горизонтальных таблицах все данные одного столбца имеют одинаковое смысловое значение и тип. В вертикальных же таблицах такую привилегию имеют только строки.
К горизонтальным таблицам мы все уже давно привыкли и считаем их как само собой разумеющееся при просмотре содержимого баз данных. К вертикальным таблицам мы также привыкли, совершенно не подозревая об этом. Просто видим мы чаще всего «вырожденные» вертикальные таблицы только с одним столбцом данных и столбцом заголовка/наименований. Эти таблицы получили название таблицы редактирования свойств объекта (Property Grid). При этом часто подразумевается, что мы имеем объект, имеющий свойства различного типа «прикрепленные» к этому объекту. Однако, мы можем иметь и объект хранящий свои параметры в дополнительном списке. То есть в Property Grid можно отображать и коллекцию элементов (об этом обычно забывают).
Кроме этого, иногда бывает удобно представлять данные в виде дерева. Однако не все табличные редакторы могут похвастать подобной возможностью. А Property Grid от Микрософт имеет даже два типа иерархии. Один виртуальный, когда данные просто группируются в категории на уровне редактора и второй актуальный, согласно структуре данных (Например, точку можно развернуть в координаты X и Y).
Также важно определится с требуемыми режимами редактирования данных. Данные могут только отображаться (данные в режиме только чтение), данные могут редактироваться без ограничений (простой режим ввода), вводимые данные должны подчиняться определенным ограничениям (ввод данных с проверками).
Если нам требуется режим ввода данных с проверкой, то здесь следует различать как минимум три уровня проверок:
Проверка вводимых символов (например, в числовое поле нельзя вводить буквы)
Проверка отдельного поля после окончания редактирования (нельзя, допустим, иметь значение больше 10)
Проверка всех полей, перед использованием данных (например, если тип средства передвижения — машина, то должно быть не менее 4-х колес)
Иногда проверки уровней 1 и 3 не проводятся и не предусмотрены разработчиком. Еще очень желательно, чтобы существовали удобные встроенные средства сообщений об ошибках при вводе исходных данных. Например, показом специальной картинки и текста в ошибочной ячейке.
Для редактирования данных нам нужно, прежде всего, удобство ввода для пользователя. Следовательно, для каждого типа данных желательно иметь специализированных редактор. Редакторы типов должен быть совместимы с компонентом редактирования.
Часто довольно желательно, если редактор будет различать режим отображение данных и режим редактирования данных (Например, в режиме отображения можно вывести «2 метра», а в режиме редактирования только «2»)
Также удобно иметь возможность добавления графических элементов к некоторым ячейкам таблицы.
Не следует также забывать и о возможности локализации таблицы. Если, например, текст передается через специальный атрибут данных, то необходимо приложить некоторые усилия для его локализации.
Вот, например как можно описать некоторые компоненты:
К сожалению, реализовать некоторый дополнительный функционал (например, проверка данных уровень 1) в Микрософт property grid настолько затруднительно (прежде всего, просто из-за банального отсутствия слова виртуал возле некоторых функций), что работа по непредусмотренному сценарию практически невозможна.