![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
Hidrag |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 877 Регистрация: 9.4.2005 Где: JDK Репутация: 1 Всего: 25 |
При написании программы на Delphi при исрльзовании DBGrid можно было кликнуть мышью на записи и в подчиненной таблице (отображении в другой DBGrid) автомиатически появлялись подчиненные записи, а в C#- овском dataGrid такое не происходит, но можно перейти на подчиненные записи в той же dataGrid. Можно ли как нить настроить это дело чтобы было как в Delphi'ском DBGrid?
![]() -------------------- ![]() |
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 5 Всего: 93 |
ИМХО просто настройкой -- нельзя. Нужно создать потомок DataGridColumnStyle и в нём вручную реализовать такую фичу -- делается это довольно легко. -------------------- Да. Именно так. |
|||
|
||||
Hidrag |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 877 Регистрация: 9.4.2005 Где: JDK Репутация: 1 Всего: 25 |
Жаль что просто настроить нелья, я сделал через DataView но как то гиморно получилось, да и с большим числом записей, чувствую тормозить будет. Если делается легко через DataGridColumnStyle может подскажешь как?:)
-------------------- ![]() |
|||
|
||||
Papirus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 298 Регистрация: 19.4.2005 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Т.е. надо тянуть с сервака подчиненные записи?
Тогда настрой SelectComand адаптера подчиненной таблицы - пропиши параметры: поля главной, как условие отбора. |
|||
|
||||
Hidrag |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 877 Регистрация: 9.4.2005 Где: JDK Репутация: 1 Всего: 25 |
Да, DataSet заполняется во время работы приложения из аксесовской базы, потом эти данные нужно отобразить в двух dataGrid, DataSet состоит из двух таблиц родительской и подчиненной вродительской есть столбец ID в подчиненной ID_P по которой и происходит подчинение в DataRelation. Вот мне и нужно кликнув по записи в DataGrid родительской таблице чтобы в подчиненной сразу отобразились все полчиненные записи, и как в таком случае когда dataGrid получает данные во время работы приложения сделать некоторые столбцы невидимыми а другим присвоить нормальные имена а не имена таблиц в базе?
-------------------- ![]() |
|||
|
||||
Papirus |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 298 Регистрация: 19.4.2005 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Все-таки наоборот - ВСЕ данные уже есть в таблицах датасета? И даже установлены связи! А гридов два? Тогда два пути 1. (опробованный) отлавливать событие перехода на следующую запись в главном гриде (я делаю через CurrencyManager.Changed) и устанавливать DefaultView.RowFilter = "[строка фильтра]"
2. (по книге Д.Сеппа) "Метод GetChildRows объекта DataRow Поиск связанных с родительской записью дочерних записей в другом объекте DataTable — очень простая задача. Для этого достаточно вызвать метод GetCbudRows нужного объекта DataRow и передать ему имя объекта DataRelation, определяю- щего отношение между объектами DataTable. Вместо имени можно также пере- дать сам объект DataRelation. Метод GetChildRows возвращает связанные данные в виде массива объектов DataRoiv. Следующий фрагмент кода вызывает метод GetChildRows и просматривает воз- вращаемые им данные; Visual Basic .NET 'Просматриваем записи о клиентах Din rowCustomer, rowOrder As DataRow For Each rowCustomer In ds.Tables("Customers").Rows Console, WriteLine(rowCustomer("CustomerID") & " - " & _ rowCustomer("CompanyName")) 'Просматриваем заказы, размешенные этими клиентами For Each rowQrder In rowCustomer. GetChildRowsC'fielationName") Console. WriteLine(vbTab & rowOrder("Order!D") & " - " * _ rowOrder("OrderDate"» Next rowOrder Next rowCustomer Visual C# .NET //Просматриваем записи о клиентах foreach (DataRow rowCustomer in ds,Tables["Customers"].Rows) { Console. WriteLine(rowCustomer["CustomerID"] + " - " + rowCustomer [ "CompanyName" ]); //Просматриваем заказы, размещенные этими клиентами foreach (DataRow rowOrder in rowCustomer. GetChildRowsC'RelationName")) Console. WriteLine("\t" + rowOrder["OrderID"] + " - " + rowO rde r [ " 0 rde rDate " ] ) ;} Метод GetParentRow объекта DataRow Объект DataRelation позволяет перемещаться по иерархии не только вниз, но и вверх. У объекта DataRow есть метод GetParentRoiv, при помощи которого удается найти родительскую запись дочерней записи на основании определенного в объек- те DataSet объекта DataRelation. Как и метод GetChildRows, GetParentRow принимает нужный объект DataRelation или строку с его именем: |
||||
|
|||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |