Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перейти к записи при раскрытии нода cxGrid 
V
    Опции темы
former
Дата 3.9.2009, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

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



Имеется связка MasterDetail (два DataSet). Для отображения данных используется cxGrid (DevExpress). 
При раскрытии нода уровня Master приходится выделять строку, что бы появились данные уровня Detail.
Хочу сделать, что бы при раскрытии нода остальные ноды сворачивались и автоматические подгружались данные Detail.
Сворачивание всех нодов (кроме выбранного) делаю так:
Код

procedure TForm1.CourseViewDataControllerDetailExpanding(
  ADataController: TcxCustomDataController; ARecordIndex: Integer;
  var AAllow: Boolean);
begin
  CourseView.DataController.CollapseDetails;
end;

Для полного счастья не хватает перехода к записи на уровне Master, нод которой раскрыли, что бы появились данные уровня Detail. Как это можно сделать?

Почему я так хочу сделать. При выделении одной записи в Master, у других записей в уровне Detail пропадают данные и появляется надпись (нет данных). 

Может я что-то вообще не так делаю?
Документацию читал. Примеры в ней смотрел.


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Akella
Дата 3.9.2009, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Что-то я наверное туплю, не понял, что нужно. Можно с рисунками?
PM MAIL   Вверх
former
Дата 3.9.2009, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

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



Скорее всего это я запутанно объяснил.
Данные получаю из DataSet-ов, связанных Master-Detail.
user posted image
На картинке фокус установлен на первую запись Master-уровня, для которого выведен Detail.
На других записях Master-уровня Detail пуст. Появляется при переходе на соответствующие записи. 
Что бы скрыть "отсутствие данных", как я писал в первом посте, сворачиваю все ноды кроме текущего.
Если открывать нод без выделения соответствующей строки (записи) в Master-уровне, то данные Detail не появляются.
user posted image
Говоря еще проще, необходимо, что бы при открытии нода Master-уровня осуществлялся переход к соответствующей записи, что бы появились данные Detail-уровня.

Akellaты вроде бы уже давно работаешь с DevExpress, должен знать. Это я только начал с ними разбираться.


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Akella
Дата 3.9.2009, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Я с master-detail очень мало работал. Посмотрю попозже.
PM MAIL   Вверх
former
Дата 3.9.2009, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

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



Да тут Master-detail не причем. Даже, если присутствует группировка средствами грида, то при раскрытии нода происходит тоже самое.


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Akella
Дата 3.9.2009, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Там свойств дофига, ты, видать, включил какое-то, которое показывает записи только у выделенной записи. Поищи его.

Добавлено через 47 секунд
Или сделай на новом, чистом, гриде. И не балуйся со свойствами, они как нож - можешь невзначай оттяпать себе кое-чего  smile 
PM MAIL   Вверх
former
Дата 3.9.2009, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

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



Делал уже два раза с чистого листа, так сказать.
Думаю, что нужно каким-то хитрым образом получить оп ноду номер записи и перейти на нее.


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Akella
Дата 3.9.2009, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



У тебя правильно заполнены ключевые поля?

Добавлено через 30 секунд
Ты сами датасеты не связывал с помощью Datasource?
PM MAIL   Вверх
former
Дата 4.9.2009, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

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



Цитата(Akella @  3.9.2009,  19:49 Найти цитируемый пост)
Ты сами датасеты не связывал с помощью Datasource? 

Связывал.
Запрос Master DataSet:
Код

SELECT
    C.COURSEID,
    C.COURSENAME,
    C.HOURS,
    C.DEPARTMENTID,
    D.SDEPNAME,
    C.CSACTUALITY
FROM COURSES  AS C
    INNER JOIN DEPARTMENTS AS D
    ON D.DEPARTMENTID = C.DEPARTMENTID

Запрос Detail DataSet:
Код

SELECT
    C.COURSEWORKID,
    C.COURSEID,
    EW.EWORKID,
    EW.EWORKNAME
FROM COURSEWORKS  AS C
    INNER JOIN EWORKS AS EW
      ON EW.EWORKID = C.EWORKID
WHERE C.COURSEID = :COURSEID

У Detail Datasource = Master Datasource.
А в гриде view Detail-уровня имеет следующие настройки:
user posted image

Это сообщение отредактировал(а) former - 4.9.2009, 00:33


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Akella
  Дата 4.9.2009, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Цитата(former @  4.9.2009,  00:32 Найти цитируемый пост)
Связывал.

Вооот! А зачем связывать два раза. Вот этим ты себе и оттяпал остальные записи!
Сам подумай, что в детальном НД ты всегда будешь видеть только те записи, которые связаны с ВЫДЕЛЕННОЙ МАСТЕР-ЗАПИСЬЮ, потому что остальных записей в детальном НД просто не будет. Догадываешься?

Добавлено через 47 секунд
Надо всегда давать более полную информацию, уже давно бы решили твою проблему smile
PM MAIL   Вверх
former
Дата 4.9.2009, 14:09 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

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



Так я пробовал еще до создания темы. Как я заметил, косяк заключается в том, что при наличии соединения (JOIN) отображается только одна строка во всех Detail. Если из запроса убрать соединение, то все нормально. Но мне без соединения никак.

При всех достоинствах DevExpress они имеют кучу недостатков, к моему сожалению/

Это сообщение отредактировал(а) former - 4.9.2009, 14:10


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Akella
Дата 4.9.2009, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Ты так ничего и не понял.

Добавлено через 53 секунды
Цитата(former @  4.9.2009,  14:09 Найти цитируемый пост)
они имеют кучу недостатков

Приведи _хотябы_ 25 из всей кучи smile

Добавлено через 1 минуту и 45 секунд
Цитата(former @  4.9.2009,  14:09 Найти цитируемый пост)
Но мне без соединения никак.

ТАК ОТКУДА ТЕБЕ ДЕТАЛЬНЫЙ ГРИД ВЫСОСЕТ ДАННЫЕ, ЕСЛИ ИХ НЕТ
PM MAIL   Вверх
former
Дата 4.9.2009, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

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



Цитата(Akella @  4.9.2009,  15:59 Найти цитируемый пост)
Приведи _хотябы_ 25 из всей кучи

Ну 25 не наберу, пока. smile 
Цитата(Akella @  4.9.2009,  15:59 Найти цитируемый пост)
ТАК ОТКУДА ТЕБЕ ДЕТАЛЬНЫЙ ГРИД ВЫСОСЕТ ДАННЫЕ, ЕСЛИ ИХ НЕТ 

Откуда, откуда... Из DataSet-а, из которого он данные берет. Там ведь JOIN присутствует.
Думаю, что мы говорим немного о разном. Я сделаю пример и выложу.


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Akella
Дата 4.9.2009, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Цитата(former @  4.9.2009,  16:14 Найти цитируемый пост)
Откуда, откуда... Из DataSet-а, из которого он данные берет. Там ведь JOIN присутствует.

Как ты не понимаешь. Детальный грид должен видеть в своём датасете (к которому подключен) ВСЕ записи. ВСЕ!. Грид сам будет тебе показывать то, что ты хочешь.

Сделай 2 датасета. Никаких привязок и соединений между собой. К первому датасету прикрути мастер-грид, ко второму детальный грид. В гриде укажи ключевые поля.
PM MAIL   Вверх
former
Дата 4.9.2009, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

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



Цитата(Akella @  4.9.2009,  16:18 Найти цитируемый пост)
Как ты не понимаешь. Детальный грид должен видеть в своём датасете (к которому подключен) ВСЕ записи. ВСЕ!. Грид сам будет тебе показывать то, что ты хочешь.

Сделай 2 датасета. Никаких привязок и соединений между собой. К первому датасету прикрути мастер-грид, ко второму детальный грид. В гриде укажи ключевые поля. 


Akella, не горячись. Я делал именно то, о чем ты говоришь. Думаю, что бы избежать разногласий я набросаю пример того, что делал.


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


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

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


 




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


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

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