Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Использование DevExpress (часть 4)

Автор: sobolenok
Дата сообщения: 23.12.2010 19:09
marser

Большое спасибо! Все получилось!
Автор: Sufferer
Дата сообщения: 23.12.2010 20:31
Непонятка какая-то с cxGrid. Добавляю новую запись и сразу после сохранения записи получаю пустой грид. Повтороное чтение из источника отображает набор с добавленной записью, но почему происходит очистка грида? Что-бы это значило?
Автор: tanaseduard
Дата сообщения: 23.12.2010 20:41
Sufferer

Дай код DFM от грида полный.
Grid подключен к DataSource?
Какая БД и какие компоненты доступа к ней?
Автор: Andryshok
Дата сообщения: 23.12.2010 21:31
Sufferer А вы попробуйте использовать не cxGrid, а обычный DBGrid, проделайте то же с оным, похоже проблема не в гриде а в вашем датасете, видимо он закрывается после сохранения записи (что кстати почти факт), и , что у вас за схема доступа к данным (СУБД, компоненты доступа) и выложите код в котором происходит сохранение записи, так будет проще помочь в вашей проблеме
Автор: jonikDk
Дата сообщения: 23.12.2010 22:10

Цитата:
Непонятка какая-то с cxGrid. Добавляю новую запись и сразу после сохранения записи получаю пустой грид. Повтороное чтение из источника отображает набор с добавленной записью, но почему происходит очистка грида? Что-бы это значило?

Может датасет у тебя закрывется после добавления записи. в Фибах была такая фишка, что после комита закрывались все датасеты.
Автор: Sufferer
Дата сообщения: 23.12.2010 22:21
Подключение идет через ADO к MSSQL. Запрос однозначно не закрывается, а вот помог флаг SmartRefresh.
Автор: dimm78
Дата сообщения: 24.12.2010 10:39

Цитата:
Непонятка какая-то с cxGrid. Добавляю новую запись и сразу после сохранения записи получаю пустой грид. Повтороное чтение из источника отображает набор с добавленной записью, но почему происходит очистка грида? Что-бы это значило?


Скорее всего DataSet у товарища висит на одной транзакции для чтения и записи. После добавления он делает жесткий Commit вместо CommitRetaining и естественно автоматом закрывается читающая транзакция.

Сорри пропустил предыдущее сообщение
Автор: Sufferer
Дата сообщения: 24.12.2010 12:38
Это снова я и с той-же проблемой. Нифига уже не понимаю, что происходит. Вчерашнее решение использовать флаг SmartRefresh помогло только вчера. Сегодня снова та-же хрень. Методом научного тыка выяснил, что если выставить CursorLocation на клиента, то добавление проходит без проблем, но при этом удаление этой записи невозможно до полного рефреша. Тихо едет крыша.
Автор: tanaseduard
Дата сообщения: 24.12.2010 12:44
Sufferer
Попробую с тем же датасорсом но возьми стандартный гнид.
Автор: rdenk1
Дата сообщения: 24.12.2010 20:40
Можно ли в событиях cxGridBandedTableViewEditKeyPress или cxGridBandedTableViewEditKeyDown узнать selstart, sellength редактируемого текста? Не нашел у aedit или aitem подобных свойств. Или хотя бы просто как узнать что какой-то текст был выделен на момент нажатия?
Автор: marser
Дата сообщения: 24.12.2010 21:41
rdenk1

Цитата:
Можно ли в событиях cxGridBandedTableViewEditKeyPress или cxGridBandedTableViewEditKeyDown узнать selstart, sellength редактируемого текста? Не нашел у aedit или aitem подобных свойств. Или хотя бы просто как узнать что какой-то текст был выделен на момент нажатия?

Нужно сделать приведение типа АEdit. Если, например, AItem.PropertiesClass = TcxTextEditProperties, то TcxTextEdit(AEdit).SelStart, TcxTextEdit(AEdit).SelLength.
Автор: alexander315435
Дата сообщения: 25.12.2010 11:31
Здравствуйте, подскажите нужно отобразить таблицу в виде master-detail, таблица как бы связана сама с собой, т. е. содержит поле parent_id. Можно как то это отобразить используя только один DataTable или это можно сделать только создав свой тип, подскажите как здесь можно это реализовать или поделитесь примером с похожей задачей.
Автор: tanaseduard
Дата сообщения: 25.12.2010 11:39
alexander315435

А как вы собираетесь в мастере отображать записи которые должны быть дочерними?
Может есть смысл держать два затачала, в первом выборка только родительских элементов а второй динамически управляеться непосредственно грибом.
Автор: jonikDk
Дата сообщения: 25.12.2010 11:47
alexander315435
дерево не ?
Автор: alexander315435
Дата сообщения: 25.12.2010 12:29
tanaseduard, не понял что такое затачало, я никогда не пользовался master-detail а devexpress почти не пользовался, поэтому и спрашиваю. Как я понимаю вы предлагаете собирать верхний список строк одним запросом для верхних узлов, а потом динамически подгружать для него дочерние узлы из БД? Мне бы хотелось получить одним запросом список всех записей и отобразить в форме дерева. Сейчас запрос возвращает мне DataTable и я хочу без преобразований его отобразить в форме master-detail это возможно.

jonikDk Да в форме дерева, вообщем нужен список строк и у каждой строки могут быть дочерние строки. Немного почитал документацию понял, что мне вроде как нужно или несколько DataTable или пользовательский объект с ссылкой на родительские элементы. В wpf когда использовал TreeView там можно было просто указать поле для объекта по которому строится иерархия, вот думаю тут как это сделать только с помощью одной DataTable, может где то можно указать одно поле, что то настроить и хоп, получу дерево в виде таблицы.
Надеюсь я понятно выразился.


Автор: tanaseduard
Дата сообщения: 25.12.2010 12:45
alexander315435
Тогда используя cxdbtreelist
По функционалу схожий с грибом но сделан иерархий, позволит вам построить полноценное дерево.
Автор: vladman
Дата сообщения: 25.12.2010 12:46
alexander315435

Цитата:
может где то можно указать одно поле, что то настроить и хоп, получу дерево в виде таблицы.

Используйте TcxDBTreeList Object.
Автор: alexander315435
Дата сообщения: 25.12.2010 12:48
tanaseduard, vladman спасибо буду пробывать.


Добавлено:
А где его взять TcxDBTreeList Object, в devExpress я его не вижу, он вообще чей и если devExpress' a то могу ли я его использовать бесплатно, если есть лицензия на devExpress.

Автор: marser
Дата сообщения: 25.12.2010 13:35
alexander315435

Цитата:
в devExpress я его не вижу, он вообще чей

http://www.devexpress.com/Products/VCL/ExQuantumTreeList/
Автор: alexander315435
Дата сообщения: 25.12.2010 14:30
marser, А есть что нибудь подобное для win forms.
Автор: marser
Дата сообщения: 25.12.2010 14:58
alexander315435

Цитата:
А есть что нибудь подобное для win forms.

http://www.devexpress.com/Products/NET/Controls/WinForms/Tree_List/
Автор: Chukotka
Дата сообщения: 25.12.2010 18:52
В cxGrid есть возможность группировки по нескольким столбцам. Для столбца А установлены
Summary.GroupKind := skCount;
Summary.GroupFormat := 'всего 0';

Но: в случае, если уровней группировок больше 1, то мне нужно, чтобы эти данные отображались только для самого нижнего уровня, а для всех остальных были бы пустыми.

В этой связи вопросы:
1. Как перехватить событие об изменении порядка группировки?
2. Как отобразить данные только для самого нижнего уровня? Смотрю в сторону события OnCustomDrawGroupSummaryCell, но где в его обработчике найти сведения о текущем уровне группировки для текущей записи?
Автор: sobolenok
Дата сообщения: 27.12.2010 18:00
Добрый день! Подскажите пожалуйста,
как спозиционироваться на последней (всегда последней) записи в сгруппированном cxGrid (отмечена стрелочкой)-

Автор: mdid
Дата сообщения: 28.12.2010 14:20
подскажите плз...у мя не исчезает подсказка cxHintStyleController...hidepause = 3
Автор: Cryogen2003
Дата сообщения: 28.12.2010 16:24
Добрый вечер. Возникла маленькая проблема, но не могу решить ее что-то не как.
Сейчас есть таблица cxGrid, в нее с помощью DOA закачиваются данные из Oracle.

В таблице есть поля:
Дата действия, Тип действия, Причина звонка, Общий комментарий, Комментарий по телефонам, Пользователь и несколько невидимых полей (одно из которых ActionId - ИД действия)

Так комментарий по телефонам - это просто строковое поле, но которое собирается на сервере из кучи параметров (тип телефона, статус звонка, номер телефон, с кем разговаривал, комментарий), то есть все это просто соединяется в одну строчку. Причем на каждое действие может быть бесконечное количество звонков по телефону.

Как бы все хорошо было, но плохо читабельно для пользователей. Передел поле комментарий по телефонам на popupedit, чтобы при клике на колонке всплывала табличка с всеми звонками по телефону. Кому-то понравилось, но многие сказали, что неудобно все равно.

Предложили все это сделать в одной таблице, чтобы обязательно не было второго уровня, было читабельно и так далее.

Как бы попробовал разбить поле комментарий по телефонам на все остальные поля, но теперь получается так, что дата действия, тип действия, пользователь, причина звонка дублируются для каждого действия. Как правильно сделать группировку, например по тому же ActionId, но при этом чтобы не было подобия второго уровня, не показывался сам Actionid, не было дубликатов в каждом из полей внутри каждого действия.

Заранее спасибо.
Автор: X11
Дата сообщения: 28.12.2010 16:34
Cryogen2003, не пойму, как связаны проблемы и вопросы по DevExpress, обсуждаемые здесь, и тот факт, что ты не можешь построить дизайн приложения.

Ну и постараюсь ответить на твой вопрос. Спроси конкретно у пользователей, как они это видят, пусть нарисуют на бамажке. Пусть хоть как-то желаемый интерфейс.
Автор: tanaseduard
Дата сообщения: 28.12.2010 16:39
Cryogen2003

По интерфейсу пообщайся действительно с пользователями, а также может им понравиться если выставишь CellMerge.
И желательно конечно картинку интерфейса с данными, так как понять на словах проблематично.
Автор: Cryogen2003
Дата сообщения: 28.12.2010 16:51
tanaseduard
X11
Ну по интерфейсу конкретно сейчас на продакшене ничего такого интересно, просто одноуровневая таблица, одно из полей PopupEdit с показом еще одного одноуровнего грида.
Хотят же, что бы каждая запись была чисто выраженной master-detail, но все в том же гриде и в том же уровне.

CellMerge пробовал, но не совсем устроило всех. Если по любому клиенту (например в типе действия) по несколько подряд действиям идет одно и тоже (ну например исходящий звонок), то несколько этих действий сливаются в одно по этому полю, а нужно только чтоб сливались в одном действии.
Автор: X11
Дата сообщения: 28.12.2010 16:56

Цитата:
Предложили все это сделать в одной таблице, чтобы обязательно не было второго уровня


Цитата:
Хотят же, что бы каждая запись была чисто выраженной master-detail, но все в том же гриде и в том же уровне.


Вы уж определитесь....

Можно использовать 2 грида и 2 уровня. 2ой грид привязать к другому набору данных и там написать какой-то хитрый SQL запрос, чтобы при нажатии на плюсик разворачивались детальные данные в подчинённой таблице.
Автор: Cryogen2003
Дата сообщения: 28.12.2010 17:06
X11
Ок, я понял что не совсем правильно выразился.
Сейчас в таблице 6 полей, одно из них они хотят разбить на несколько частей, но при этом в это поле может разбиться еще и на несколько записей. Надо сделать так, чтобы остальные поля никак не разбивались, то есть были одной строчкой и все это в одном гриде с одним уровнем.
Комментарии по телефонам выглядят примерно так сейчас (просто текст внутри каждого действия):
Сотовый телефон - дозвонился - все ок, обещал платить вовремя - Телефон: 7-926-1112222 - Разговаривал: Клиент; Домашний телефон - дозвонился - Старенькая бабушка сказала, что не знает клиента - Телефон: 7-495-1112222 - Разговаривал: Клиента не знают

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

Предыдущая тема: Помогите пожалуйста с блокировкой клавиатуры и мышки


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.