Как быть с DataSet и двумя Relation
От: Yozh_Programmer  
Дата: 13.11.04 11:53
Оценка:
Есть у меня датасет, в котором есть 3 таблицы, причем 2 логически связаны с третьей. Мне надо сделать две пары гридов. Один из гридов в паре — основная таблица, а второй — одна из 2-х зависимых. Так вот на сколько я понимаю, если мне создать в датасете 2 Relation'а, то получится такая ситуация. Когда я буду выбирать строку в основном гриде одной из пар, то эта же строка станет текущей и в основном гриде другой пары, это будет сказываться и на содержании зависимых гридов. Можно ли сделать, так чтобы выбор в одном основном гриде не влиял на другой с учетом того, что от него зависит и содержание зависимого грида.
Можно конечно создать DataView и забиндить гриды на него, а потом вручную обрабатывать изменения позиции BindingContext. Но может есть визуальный способ реализации?

16.11.04 20:45: Перенесено модератором из '.NET' — TK
Re: Как быть с DataSet и двумя Relation
От: _FRED_ Черногория
Дата: 13.11.04 15:01
Оценка:
Здравствуйте, Yozh_Programmer, Вы писали:

Y_P>Есть у меня датасет, в котором есть 3 таблицы, причем 2 логически связаны с третьей. Мне надо сделать две пары гридов. Один из гридов в паре — основная таблица, а второй — одна из 2-х зависимых. Так вот на сколько я понимаю, если мне создать в датасете 2 Relation'а, то получится такая ситуация. Когда я буду выбирать строку в основном гриде одной из пар, то эта же строка станет текущей и в основном гриде другой пары, это будет сказываться и на содержании зависимых гридов. Можно ли сделать, так чтобы выбор в одном основном гриде не влиял на другой с учетом того, что от него зависит и содержание зависимого грида.

Y_P>Можно конечно создать DataView и забиндить гриды на него, а потом вручную обрабатывать изменения позиции BindingContext. Но может есть визуальный способ реализации?

В датасете текущей позиции нету. Она появляется только, например, в контроле, с которым связан датасет.
Для того, чтоб синхронизации не было, ставь гридам в качестве источника данных не один и тот же объект, а разные. Например, сделай два одинаковых ДатаВью, свяжи с одним и тем же датасетом и каждому гриду укажи брать данные из своего вью. Тогда при добавлении строки в одном из гридов она автоматом появится и во втором, но текущая позиция у них будет своя.
Help will always be given at Hogwarts to those who ask for it.
Re[2]: Как быть с DataSet и двумя Relation
От: Yozh_Programmer  
Дата: 13.11.04 22:00
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>В датасете текущей позиции нету.


Я же написал
Когда я буду выбирать строку в основном гриде одной из пар, то эта же строка станет текущей и в основном гриде другой пары, это будет сказываться и на содержании зависимых гридов

_FR>Для того, чтоб синхронизации не было, ставь гридам в качестве источника данных не один и тот же объект, а разные.


Ну это то я знаю, только вы меня недопоняли, у меня есть 2 однотипных грида, с ними связаны по отдельность еще по одном гриду. Связь между двумя гридами (основным-зависимым) осушествляется посредством DataRelation. А если у меня 2 пары гридов схемы основной-зависимый.

Ну допустим, есть склады, есть запчасти и работники складов. Получается 2 пары отношений: склады-запчасти, склады-работники.

Если делать один DataSet, с 3 таблицам, сделать 2 Relation'а, потом создать 2 пары гридов и забиндить на них таблицу складов (на основные гриды) и DataRelation'ы на зависимые, то при изменении текущей позиции в одном из ГРИДОВ склады, позиция будет меняться и в другом тоже, а мне надо, чтобы они были независимы, только опять таки учтите, что у них есть зависящие гриды, поэтому простым DataView не обойтись, по крайней мере визуально.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[3]: Как быть с DataSet и двумя Relation
От: _FRED_ Черногория
Дата: 15.11.04 09:38
Оценка:
Здравствуйте, Yozh_Programmer, Вы писали:
Y_P>Ну допустим, есть склады, есть запчасти и работники складов. Получается 2 пары отношений: склады-запчасти, склады-работники.
...
Y_P>Если делать один DataSet, с 3 таблицам, сделать 2 Relation'а, потом создать 2 пары гридов и забиндить на них таблицу складов (на основные гриды) и DataRelation'ы на зависимые, то при изменении текущей позиции в одном из ГРИДОВ склады, позиция будет меняться и в другом тоже, а мне надо, чтобы они были независимы, только опять таки учтите, что у них есть зависящие гриды, поэтому простым DataView не обойтись, по крайней мере визуально.

Правильно я понял, что требуется иметь два независимых грида складов, один грид запчастей, один работников?
тогда запчасти с какого склада должны показываться, если в гридах разные позиции?
Help will always be given at Hogwarts to those who ask for it.
Re[4]: Как быть с DataSet и двумя Relation
От: Yozh_Programmer  
Дата: 15.11.04 10:15
Оценка:
Один грид ЗАПЧАСТИ зависит от одного из гридов СКЛАДЫ, а грид РАБОТНИКИ от другого грида СКЛАДЫ. Так вот если я хочу посмотреть работников определенного склада, то меняю позицию в соответствующем гриде СКЛАДЫ. Так вот если делать с DataSet и биндить оба грида СКЛАДЫ на одну и ту же таблицу, то при изменении позиции в одном гриде СКЛАДЫ, позиция в другом также будет меняться. А как сделать, чтобы не менялось и чтобы максимально визулизировать?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[5]: Как быть с DataSet и двумя Relation
От: _slavick  
Дата: 15.11.04 11:25
Оценка: 14 (2)
Здравствуйте, Yozh_Programmer, Вы писали:

Y_P>Один грид ЗАПЧАСТИ зависит от одного из гридов СКЛАДЫ, а грид РАБОТНИКИ от другого грида СКЛАДЫ. Так вот если я хочу посмотреть работников определенного склада, то меняю позицию в соответствующем гриде СКЛАДЫ. Так вот если делать с DataSet и биндить оба грида СКЛАДЫ на одну и ту же таблицу, то при изменении позиции в одном гриде СКЛАДЫ, позиция в другом также будет меняться. А как сделать, чтобы не менялось и чтобы максимально визулизировать?


Для каждого ведущего грида нужно создать DataView и указать его в качестве DataSource, для ведомых гридов в качестве DataSource указывать
нужные соответствующие DataView, а в качестве DataMember — имя Relation:
DataView dv1 = new DataView(MasterDataTable);
DataView dv2 = new DataView(MasterDataTable);
...
DataView dvN = new DataView(MasterDataTable);

MasterGrid1.DataSource = dv1;
MasterGrid2.DataSource = dv2;
...
MasterGridN.DataSource = dvN;

SlaveGrid1.DataSource = dv1;
SlaveGrid1.DataMember = "Relation1";

SlaveGrid2.DataSource = dv2;
SlaveGrid2.DataMember = "Relation2";
...
Re[2]: Как быть с DataSet и двумя Relation
От: Yozh_Programmer  
Дата: 15.11.04 12:28
Оценка:
Большое спасибо, помогло!
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.