Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа со связанными таблицами, Перемещение по записям 
:(
    Опции темы
Alexb11
Дата 13.5.2008, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 19.4.2007

Репутация: нет
Всего: нет



Имеется форма. На ней два грида. Нужно чтобы при перемещении по оному из них, происходило перемещение по соответствующим записям в другом.
Два грида связаны со связанными таблицами.("Один ко многим")
PM MAIL   Вверх
Veitmen
Дата 14.5.2008, 05:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 10.11.2006
Где: СПБ

Репутация: нет
Всего: 4



Реализовать можно многимим путями. Но в первую очередь к гридам привяжи дата биндинг. У дата биндинга укажи нужный тебе дасурс.
Дьше смотрим как тебе будет удобнее.
напрмер ты передавал Table как дата сурс,то делаем так: У дата биндинга при выборе записи текущая позиция хранится в 
DataBinding.Current. ТАм через приведение типа ты получаешь именно тот тип который тебе нужен. 
Пример для датасурса Table в котором строки DataRow:
Код

private void 
Grid_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
 DataRow select = (GridBinding.Current as DataRow);
}


Вот у тебя теперь есть выбранный объект. Загрузить теперь данные в друго грид не сложно. Надо передать второму гриду, нужный датасурс. Как получить датасурс? Да хоть как. Например можно у полученного DataRow взять все чайлдовские или парентовские записи, через методы GetChildRows, GetParentRows. Они перегружены 4 рааз кажется. Но всегда тебе надо указывать какой DataRelation тебе надо использовать для получения связанных записей. 
Можно передать твой DataRow  в твои методы, где у тебя вернется список записей по этому DAtaRow. В общем тут как тебе удобнее.
PM MAIL ICQ   Вверх
akizelokro
Дата 14.5.2008, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: нет
Всего: 5



Во втором гриде просто выставляешь фильтр по значению ключа в выбранной строке. Это используется, если ты хочешь отобразить дочерние записи. Достаточно просто.
Если же ты хочешь добиться перемещения во второй гриде по какому-то хитрому критерию исходя из выбранной строки в первом и чтобы при этом записи в датагриде не менялись, то это придется ручками кодить поиск.


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
Любитель
Дата 15.5.2008, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 1
Всего: 92



Цитата(Alexb11 @  13.5.2008,  16:23 Найти цитируемый пост)
перемещение по соответствующим записям в другом

А что за "соответствующие записи"? Если речь про Master/Detail - то достаточно для detail-грида датасорсом поставить релейшен между таблицами. Если в дизайнере обычно датасорсом ставится таблица или биндинг-сорс от мастер-грида, а дата-мембером - имя релейшена.


--------------------
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0559 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.