Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Вывод информации в DataGridView


Автор: eon 18.11.2010, 14:27
Задача следующая:
Есть бд в MS SQL. База данных для заявок внутри предприятия. Ну типа helpdesk система. 
Есть таблицы: Requests (сами завки), Files (таблица для прикрепления файлов к заявкам), Naimenovanie (справочник наименований проблем), Utochnenie (Справочник уточнений для Наименований), и т.д.. Есть база пользователей в домене - Active Directory.
Таблица Request:
1. id - номер заявки,
2. user_guid - глобальный уникальный номер пользователя в Active Directory,
3. naimenovanie_id - номер наименования из справочника Naimenovanie,
4. utochnenie_id - номер уточнения из справочника Utochnenie,
5. status_id - текущий статус заявки из справочника Status,
6. time_voznik_id - время возникновения проблемы из справочника Time_voznik,
7. podrobnoe_opisanie – подробное описание проблемы,
8. administrator_guid – глобальный уникальный номер пользователя, являющегося членом группы Administrators Request, в Active Directory,
9. comment – комментарий, оставленный к заявке.
10. time_ustr_id – желаемое время устранения из справочника Time_ustr. 
Ну еще некоторые поля, к делу пока не относящиеся.

Вот так вот. Это основная таблица БД.

Что я хочу видеть в DataGridView?
Следующие столбцы: (причем всё буду писать программно, ручками)
1. Номер заявки – id заявки из таблицы Request (databound column);
2. Имя О. Фамилия пользователя – из Active Directory по user_guid из таблицы Requests(unbound column);
3. Отдел – из Active Directory по user_guid(unbound column);
4. Должность – из Active Directory по user_guid(unbound column);
5. Почтовый адрес – из Active Directory по user_guid(unbound column);
6. Телефон – из Active Directory по user_guid(unbound column);
7. Время поступления заявки - из таблицы Request (databound column);
8. Наименование проблемы – поле name из таблицы Naimenovanie по naimenovanie_id из таблицы Requests (не знаю databound column или unbound column, если будет браться из другой таблицы);
9. Уточнение уточнение - поле name из таблицы Utochnenie по utochnenie_id из таблицы Requests (не знаю databound column или unbound column);
10. Текущий статус заявки - поле name из таблицы Status по status_id из таблицы Requests (не знаю databound column или unbound column);
11. Время возникновения проблемы - поле name из таблицы Time_voznik по time_voznik_id из таблицы Requests (не знаю databound column или unbound column);
12. Подробное описание проблемы – из поля podrobnoe_opisanie из таблицы Requests (databound column);
13. Назначенный исполнитель - Имя О. Фамилия администратора из Active Directory по administrator_guid из таблицы Requests(unbound column);
14. Количество файлов – количество файлов прикрепленных к заявке из таблицы Files по request_id количество (unbound column);
И т.д.

Предположим, есть такая запись в таблице Requests:
Id 34 
User_guid 37856-3459-а4536-р545-456
Naimenovanie_id 3
Utochnenie_id 36
Status_id 2
Time_voznik_id 3
podrobnoe_opisanie – При включении компьютера появляется ошибка 0х4574404. 
administrator_guid – 5н6846-45764-45645-4564-арпа
comment – Ирина В. Петрова (13.10.10 12:34:30): Помогите пожалуйста.
time_ustr_id – 4

Я хочу чтобы в датагридвью1 вывелось:
| 34 | Ирина В. Петрова | Отдел контроля качества | Экономист | [email protected] | 2020 | 13.10.10 12:34:30 | Проблемы с компьютером | Компьютер не загружается | В очереди | Вчера | При включении компьютера появляется ошибка 0х4574404. | Иван И. Иванов | 3 |

Уже написал программу и тестовую БД, всё работает хорошо. Но при проектировании БД не связывал таблицы. То есть таблица Request содержит в основном много текста, а надо бы, чтобы id-шники содержала. Впервые разрабатываю реальную БД. Возможно, что-то неправильно.
Так вот вопросы: 
1. Обязательно ли назначать всякие там внешние ключи для вывода информации из таблиц в одну datagridview? Как это делается?
2. Может чего посоветуете, что неправильно мыслю и т.д. и т.п.

Автор: jonie 18.11.2010, 22:40
Вариаты:
Во-первых MSSQL умеет AD.
Во-вторых - создайте просто класс, содержащий все ваши поля (DTO иначе говоря), сделайте в памяти BindingList<вашКласс>, заполните его ЧЕМ хотите и КАК хотите и просто установите DataSource у грида. Это делаете примерно так (см. фильм в аттаче).
....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)