Есть у меня датасет, в котором есть 3 таблицы, причем 2 логически связаны с третьей. Мне надо сделать две пары гридов. Один из гридов в паре — основная таблица, а второй — одна из 2-х зависимых. Так вот на сколько я понимаю, если мне создать в датасете 2 Relation'а, то получится такая ситуация. Когда я буду выбирать строку в основном гриде одной из пар, то эта же строка станет текущей и в основном гриде другой пары, это будет сказываться и на содержании зависимых гридов. Можно ли сделать, так чтобы выбор в одном основном гриде не влиял на другой с учетом того, что от него зависит и содержание зависимого грида.
Можно конечно создать DataView и забиндить гриды на него, а потом вручную обрабатывать изменения позиции BindingContext. Но может есть визуальный способ реализации?
16.11.04 20:45: Перенесено модератором из '.NET' — TK
Здравствуйте, 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.
Здравствуйте, _FRED_, Вы писали:
_FR>В датасете текущей позиции нету.
Я же написал
Когда я буду выбирать строку в основном гриде одной из пар, то эта же строка станет текущей и в основном гриде другой пары, это будет сказываться и на содержании зависимых гридов
_FR>Для того, чтоб синхронизации не было, ставь гридам в качестве источника данных не один и тот же объект, а разные.
Ну это то я знаю, только вы меня недопоняли, у меня есть 2 однотипных грида, с ними связаны по отдельность еще по одном гриду. Связь между двумя гридами (основным-зависимым) осушествляется посредством DataRelation. А если у меня 2 пары гридов схемы основной-зависимый.
Ну допустим, есть склады, есть запчасти и работники складов. Получается 2 пары отношений: склады-запчасти, склады-работники.
Если делать один DataSet, с 3 таблицам, сделать 2 Relation'а, потом создать 2 пары гридов и забиндить на них таблицу складов (на основные гриды) и DataRelation'ы на зависимые, то при изменении текущей позиции в одном из ГРИДОВ склады, позиция будет меняться и в другом тоже, а мне надо, чтобы они были независимы, только опять таки учтите, что у них есть зависящие гриды, поэтому простым DataView не обойтись, по крайней мере визуально.
Здравствуйте, 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.
Один грид ЗАПЧАСТИ зависит от одного из гридов СКЛАДЫ, а грид РАБОТНИКИ от другого грида СКЛАДЫ. Так вот если я хочу посмотреть работников определенного склада, то меняю позицию в соответствующем гриде СКЛАДЫ. Так вот если делать с DataSet и биндить оба грида СКЛАДЫ на одну и ту же таблицу, то при изменении позиции в одном гриде СКЛАДЫ, позиция в другом также будет меняться. А как сделать, чтобы не менялось и чтобы максимально визулизировать?
Здравствуйте, 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);