| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > Вопрос по XtraGrid |
| Автор: Server 13.2.2006, 15:24 |
| Доброго времени суток. Например. У меня в DataSet есть две таблицы между ними есть Relation. В таблице "Товар" поле - "Единицы измерения" связано с полем EdIzmerID Таблицы "Еденицы измерения" В XtraGrid можно настроить этот Relation, что бы в таблице "Товар" в поле "Единицы измерения" вместо идов подставлялось их наименование? Я это делал на обыкновенном DataGrid, нужно было дописывать метод Pint. Подскажите как с XtraGrid? Заранее благодарю. |
| Автор: Exception 13.2.2006, 16:37 | ||
Просто составь запрос INNER JOIN вроде
|
| Автор: mr.DUDA 13.2.2006, 16:38 | ||||||
| Есть два варианта решения этой проблемы. Первый вариант (через дизайнер) - создать repository editor с типом LookupEdit, который настроить на таблицу "Единицы измерения" (в DataSource прописываем таблицу "Единицы измерения", DisplayMember - имя колонки с наименованием ед. измерения, ValueMember - имя колонки с Id единицы измерения),тогда грид всё сделает сам. Второй вариант - через код. Пишем где-нибудь в OnLoad-е:
здесь myGridColumn - колонка с айдишником единицы измерения. Класс "ФорматтерЕдиницИзмерения" (да, можно и по-русски
Можно к примеру передать в конструктор форматтера ссылку на датасет, и в Format() делать запрос к таблице датасета типа:
Добавлено @ 16:39 З.Ы. всё это есть в примерах для DevExpress. |
| Автор: Server 13.2.2006, 16:58 |
| Спасибо огромное за советы. Буду пробовать. Я дядя взрослый (30 лет) но только начинаю изучать SQL Server, С#. До этого и на сегодняшний день программирую на 1С. |
| Автор: Exception 13.2.2006, 17:23 |
| Дуда, а зачем же так сложно-то |
| Автор: mr.DUDA 13.2.2006, 17:25 |
| А ты вопрос внимательней почитай... |
| Автор: Server 13.2.2006, 17:33 |
| Вопрос: Подскажите может есть в SQL Server хранимая процедура которая принимала в качестве параметра название таблицы и возвращала все её Relation? Название или номер поля и с какой таблицей(название) связано? Я программно получаю название таблицы загружаю её в ДатаСет затем должен получить все таблицы с какими она связана и их тоже подгрузить в этот же ДатаСет. Первая таблица будет главной и будет редактироваться все остальные таблицы которые подгрузятся в ДатаСет это таблицы с какими первая связана. Зачем мне это нужно? Я пишу класс который бы дал возможность редактировать все справочники в базе данных. Может есть у кого на эту тему свои соображения буду благодарен. |
| Автор: mr.DUDA 13.2.2006, 17:52 |
| Такого понятия как Relation нет в SQL Server-е, вроде. Взаимосвязи в датасете зависят от того, как построен запрос. Можно трактовать одни и те же таблицы как угодно: например, выбрать все заказы по поставщику, или всех поставщиков по заказу, получая в обоих случаях датасет с двумя таблицами, но разными связями. Это всё к тому, что взаимосвязи по данным обычно задаются отдельно, в виде метаданных (в отдельной таблице, в XSD-файле, прямо в программе или как-нибудь ещё). P.S. Модератор: Пожалуйста, один топик - один вопрос. Первый вопрос был по WinForms, а этот уже в раздел по БД... |
| Автор: Exception 13.2.2006, 18:37 |
| Честно говоря, я не понял, чем не подходит мой вариант |
| Автор: Exception 13.2.2006, 23:48 |
| Усе, понял Добавлено @ 23:56 Кстати, невольно вспомнился пример отношения "м-к-м": сборки и пространства имен. Одна сборка может содержать много пространств имен, а одно пространство имен, в свою очередь, может быть разбито на несколько сборок |
| Автор: mr.DUDA 14.2.2006, 00:05 | ||
Тоже вариант. Жжош |
| Автор: -ser- 14.2.2006, 06:15 | ||||
| [/OFFTOPIC]
mr.DUDA, не знаю как ты докатился до такой жизни, но действительно работает
[OFFTOPIC] |
| Автор: Server 14.2.2006, 09:47 | ||||||
Если я правильно понял сам запрос к данным,которые будут в результирующей таблице, формируется отдельно, а связи отдельно. mr.DUDA если можно ещё о связях, может куски кода как работать с XMLSchema1.xsd файлом ПОЖАЛУЙСТА. В исходниках по XtraGrid есть XML*.xsd файлы но для чего они нужны и как с ними работать не понимаю, хотя догадываюсь что в этом файле можно построить связи всех необходимых таблиц и эти связи будут как XML документ. На каждую таблицу свой файл с связями. Затем в программе подгружать XML*.xsd файл по названию и получать эти связи. Я что-то такое пробовал
или
XMLSchema1.xsd документе посоздавал аналогичные таблицы с ихними связями. но что дальше с ним делать не знаю. Заранее благодарю. |
| Автор: mr.DUDA 14.2.2006, 14:53 |
| С XSD работать гораздо проще, чем это кажется. Всё "шаманство" можно выразить в трёх действиях: 1) добавляем в проект XSD-файл 2) открыв в дизайнере, добавляем туда таблицы и тянем нужные колонки drag&drop'ом чтоб создать relation-ы 3) в том же дизайнере в контекстном меню ставим галку "Generate DataSet" - и всё, получаем типизированный датасет с именем как у XSD-файла Что такое типизированный датасет: это наследник от датасета, в котором есть свойства с именами как у таблиц в XSD. Каждое такое свойство возвращает типизированную таблицу. Каждая типизированная таблица содержит коллекцию типизированных DataRow-ов, каждый типизированный DataRow содержит свойства с именами как у полей таблицы. Использование типизированных датасетов: можно зачитывать в них данные полученные от датаадаптера, так же как и в обычных датасетах. Relation-ы превращаются в свойства DataRow-ов. Например, если есть таблица "Заказы" и таблица "Поставщики", и от поставщиков торчит ParentRelation в таблицу заказов (много заказов - к - одному поставщику), то в ЗаказRow будет свойство типа ПоставщикRow, вот так всё просто. |
| Автор: Server 14.2.2006, 16:43 | ||
| mr.DUDA спасибо огромное и всем кто помог. Из всех вариантов я наверное выберу вариант
Уже делал наброски вроде то что нужно. Спасибо |