Добрый День!
Возник вопрос, не знаем, куда копать
Перекопал уже и BaseGridArea и другие сервисы
и таблицы с запросами и датасетами
А вопрос-то в следующем
Есть такие колонки в гриде, как "Создал" и "Изменил", которые по сути своей являются ссылками на соответствующие разделы
Как сделать такие колонки самому?!
Допустим, колонка отображает данные из раздела tbl_Document
Как мне сделать ее подчеркнутой и кликабельной?
Нравится
спасибо
справочники я умею делать
вот только поле типа "справочник" со всеми ссылками, насройками и корректными колонками не делают из колонки - ссылку
нет, подчеркнутость, как, например у "Создал" почти в любом гриде
где просто нажатие на значение в "создал", скажем, Васю Пупкина - откроет карточку редактирования контакта
а нажатие с зажатым Ctrl - перейдет к Васе Пупкину в контактах
Не знал об этой возможности, но явно функция "Перейти к".
Вам надо зайти в скрипт scr_WindowUtils. Там будет функция FillReferencesDictionary()
По аналогии добавить свой раздел.
function FillReferencesDictionary() { var RefDictionary = GetNewDictionary(); RefDictionary.Add('ds_Contact', 'wnd_ContactsWorkspace'); ... //RefDictionary.Add('датасет', 'окно воркспейса'); }
Можно обрабатывать событие двойного клика по DataGrid и делать всё что нужно, определяя кто был "щёлкнут".
function ElementOnClick(Control) { var Dataset = dBookAuthor.Dataset; Dataset.Open() var name= IsDatasetEmpty(Dataset) ? null : Dataset('Name'); MessageBox(Author); // поле выделено цветом, и кликабельно, ибо будет делать то, что здесь написано. А мы можем сформировать объект Attributes из полей "щёлкнутой" записи, и к примеру передать его нужному окну в его вызове. }
Иван, колонка-ссылка реализована в базовой версии. alt+click открывает карточку, ctrl+click переходит в раздел.
"Сазанов Александр Владимирович" написал:Не знал об этой возможности, но явно функция "Перейти к".
Вам надо зайти в скрипт scr_WindowUtils. Там будет функция FillReferencesDictionary()
По аналогии добавить свой раздел.
function FillReferencesDictionary() {
var RefDictionary = GetNewDictionary();
RefDictionary.Add('ds_Contact', 'wnd_ContactsWorkspace');
...
//RefDictionary.Add('датасет', 'окно воркспейса');
}
к сожалению, FillReferencesDictionary - не то
она делает общий справочник из возможных датасетов для перехода в меню ПКМ "Перейти к"
у меня же в колонке тащатся стандартные датасеты, уже указанные в FillReferencesDictionary
и колонка все-равно не подчеркнута и переходить позволяет только по ПКМ, а не по нажатию на ней самой :(
"Litvyakov Yegor Vladimirovich" написал:Можно обрабатывать событие двойного клика по DataGrid и делать всё что нужно, определяя кто был "щёлкнут".
это можно
но, это уже скорее костыль)
"Maxim Gritsenko" написал:Иван, колонка-ссылка реализована в базовой версии. alt+click открывает карточку, ctrl+click переходит в раздел.
это значит, что самому сделать колонку ссылкой нельзя?
и почему альт+клик?
у нас ссылка открывается простым нажатием на нее ЛКМ
без альта
"Калинин Иван" написал:это значит, что самому сделать колонку ссылкой нельзя?
и почему альт+клик?
у нас ссылка открывается простым нажатием на нее ЛКМ
без альта
День добрый Иван!!!
Максим в своем сообщение вам правильно описал, что в GridArea "колонки ссылки" открываются с удерживанием клавиши Alt. для перехода к записи в ее раздел удерживаем клавишу Ctrl и нажимаем ссылку. Это стандартные возможности Terrasoft 3.Х зашитые в ядре. Да вы так же правы Иван, что в версиях 3.3.2 и ниже террасофта можно было открыть карточку объекта обычным нажатием на ссылку, но в версиях 3.4.0 и выше это исправили на удержание клавиши Alt и нажатие на ссылку.
если говорить о ссылках в GridArea то это зиписи Типа "Поле Справочника". И они все отображаются в GridArea в виде ссылок.
Отвечая на ваш вопрос самый основной опираясь на последнюю вашу цитату Иван (где вы приводите примеры колонок со ссылками) отвечаю. Чтобы в GridArea содержимое колонки отображалось в виде ссылок, вам нужно выполнить следующее:
1. Создать Реляционную связь. как это сделано в вашем примере в таблице tbl_Contact, для примера беру реляционную связь с таблицей Контрагенты (tbl_Account). Пример во Вложенном скриншоте.
2. Добавить в запрос sq_Contact новое Левое соединение и 2 новых поля. Вот пример:
SELECT ... [tbl_Contact].[AccountID] AS [AccountID], [tbl_Account].[Name] AS [AccountName], ... FROM [dbo].[tbl_Contact] AS [tbl_Contact] ... LEFT OUTER JOIN [dbo].[tbl_Account] AS [tbl_Account] ON [tbl_Account].[ID] = [tbl_Contact].[AccountID] ...
3. В датасет ds_Contact добавить новое поле типа "Поле справочника". Пример во вложенном скриншоте.
4. Разместить поле в GridArea и все.
Спасибо за крайне развернутый ответ
У нас так реализованы все поля в террасофте, которые ссылаются на какие-либо данные
Но подчеркнутыми ссылками, почему-то, являются только те, что были уже настроены до нас
есть еще свойство IDataGridColumn, которое и отвечает за отображение колонки как ссылки (dgcltLookup) или как просто поля(dgcltGeneral):
dgcltDataFieldType - отрисовывает на основании типа поля (т.е. если справочник - то ссылкой, если что-то другое - нет)
вот сделал поле сумма "ссылкой" (правда она никуда не ведет):
Прошу прощения, но я рано порадовался
не помогает смена значения в данном свойстве колонки
никакое из свойств не делает колонку - ссылкой
при том, стандартные колонки "CreatedByID", "ModifiedByID" и "AccountID" и т.п. являются ссылкой при любом из значений данного поля
Иван, там написано, что сделав поле ссылкой, она никуда не приведет (просто будет подчеркнута).
Что бы куда-то привело воспользуйтесь этим
"Maxim Gritsenko" написал:Иван, а версия/сборка приложения какая?
3.3.2.244
"Сазанов Александр Владимирович" написал:Иван, там написано, что сделав поле ссылкой, она никуда не приведет (просто будет подчеркнута).
Что бы куда-то привело воспользуйтесь этим
я понимаю, что справочник должен был в референсах у террасофта, чтобы он знал, куда ему идти
только вот колонки у меня даже не подчеркиваются ;)
"Сазанов Александр Владимирович" написал:Иван, там написано, что сделав поле ссылкой, она никуда не приведет (просто будет подчеркнута).
Что бы куда-то привело воспользуйтесь этим
действительно, чтобы отработал переход, надо чтобы спраовчник был в "референсах") (по крайней мере в 3.4.1 - см function DoLookupColumnClick)
но сама отрисовка ссылка\не_ссылка происходит, видимо, в ядре (не нашел отвечающего за это функционала в конфигурации)
"Maxim Gritsenko" написал:Да, в ядре и в 3.3.2.224 это реализовано.
Прошу прощения, не очень понял формулировку
Т.е. в нашей версии это реализовано в ядре, а не в открытом коде?
Надо так читать
"Андросов Дмитрий" написал:но сама отрисовка ссылка\не_ссылка происходит, видимо, в ядре
"Maxim Gritsenko" написал:Да, в ядре
"Maxim Gritsenko" написал:в 3.3.2.224 это реализовано.