Рано или поздно придется столкнуться с подключением сборок в конструкторе.
Находятся все сборки по пути Windows/assembly/GAC_MSIL
Каталог скрытый, поэтому для доступа к нему через эксплорер необходимо включить отображение скрытых файлов и папок в свойствах папки.
Каждая сборка лежит в отдельной папке, поэтому подключать их придется по одной.
Из-за особенностей Конструтора у вас не получится подключить сборки сразу из assembly, поэтому скопируйте сначала нужные сборки в отдельную папку и уже оттуда подключайте. Но лучше удалить из GAC_MSIL скрытый файл "Desktop.ini". После этого папки со сборками станут видны из конструктора и их не придется никуда копировать. Также одном из плюсов данного способа является тот факт, что при переносе решения на другую машину, вам не придется заново прописывать пути к сборкам.
Для подключения сборки кликните на "+" в нижней таблице "Используемые дополнительные сборки" в окне редактирования скриптов конструктора, выберите нужную сборку и добавьте ее в таблицу.
Мы обсуждаем следующие темы: Docsvision, редактирование и создание карточек документов, процесс, написание кода на C#
Темы обсуждений
бизнес-календарь
(2)
бизнес-процесс
(1)
блог
(3)
виды
(2)
дайджест
(1)
дополнительные сборки
(1)
изображение
(1)
карточки
(4)
кнопка
(1)
конструктор
(9)
литература
(1)
навигатор
(1)
настройка представлений
(1)
нумератор
(2)
ошибки
(3)
полезность
(1)
разметки
(2)
роли
(1)
сервер
(1)
сервис
(1)
скрипт
(12)
состояния
(1)
табличный контрол
(3)
уведомления
(1)
attribute
(1)
C#
(11)
DevExpress
(1)
DVCardManager
(2)
DVExplorer
(1)
HowTo
(18)
property
(3)
xml
(1)
XSLT
(1)
Поиск блогу
четверг, 30 июня 2011 г.
Как подключать сборки в конструкторе DocsVision
Темы, поднимаемые в сообщении:
дополнительные сборки,
конструктор,
HowTo
Получение данных выделенной строки из таблицы
Вывод выделенной строки оказался весьма нетривиальным заданием.
Данный фрагмент кода выведет в MessageBox содержимое выделенной строки в табличном контроле с названием "Журнал заявки".
Для работы скрипта нужно прописать в using:
Возможно, что-то еще...
а также подключить сборки DevExpress. А именно
DevExpress.XtraLayout.9.2.dll
DevExpress.XtraGrid.9.2.dll
DevExpress.Data.9.2.dll
DevExpress.Utils.9.2.dll
Данный фрагмент кода выведет в MessageBox содержимое выделенной строки в табличном контроле с названием "Журнал заявки".
LayoutHelper layoutHelper = new LayoutHelper(CardControl.LayoutControl, CardControl.BarManager, Session, CardData.Type.Id); DocsVision.BackOffice.View.WinForms.LayoutItems.ICustomPropertyItem propertyItem = layoutHelper.GetCustomPropertyItem("Журнал заявки"); var refMapper = new CardPropertyDescriptionMapper(Session); DocsVision.BackOffice.Model.CardProperties.Entities.CardPropertyTable cpt = null; foreach (DocsVision.BackOffice.Model.Layouts.Entities.CardPropertyTableDescription refPropertyTableDesc in refMapper.FindTableProperties(CardData.Type.Id)) { if (refPropertyTableDesc.Name == "Журнал заявки") { var propertyMapper = new CardPropertyMapper(Session, CardData.Id, DomainObject.CustomPropertiesSectionId); cpt = propertyMapper.FindTable(refPropertyTableDesc); break; } } System.Reflection.Assembly asm = System.Reflection.Assembly.Load("DocsVision.BackOffice.View, Version=4.5.0.0, Culture=neutral, PublicKeyToken=7148afe997f90519"); Type tableType = asm.GetType("DocsVision.BackOffice.View.WinForms.PropertyControls.TablePropertyControl"); var propInfo = tableType.GetProperty("GridView"); object ooo = propInfo.GetValue(propertyItem.Control, System.Reflection.BindingFlags.NonPublic, null, null, System.Globalization.CultureInfo.InvariantCulture); DocsVision.BackOffice.View.WinForms.Controls.GridExView gridExView = ooo as DocsVision.BackOffice.View.WinForms.Controls.GridExView; DevExpress.XtraGrid.Views.Grid.GridView gridView = gridExView as DevExpress.XtraGrid.Views.Grid.GridView; object key = ((System.Data.DataRowView)gridView.GetFocusedRow()).Row[gridExView.KeyField]; foreach (DocsVision.BackOffice.Model.CardProperties.Entities.CardPropertyTableRow row in cpt.Rows) { if (row.Key == (Guid)key) { string message = ""; foreach (DocsVision.BackOffice.Model.CardProperties.Entities.CardProperty cellProp in row.Cells) { object val = cellProp.Value; message += val == null ? "null" : val.ToString(); message += " "; } MessageBox.Show(message); } }
Для работы скрипта нужно прописать в using:
using DocsVision.Platform.WinForms.DataSource; using DocsVision.BackOffice.Model.CardProperties.DataAccess;
Возможно, что-то еще...
а также подключить сборки DevExpress. А именно
DevExpress.XtraLayout.9.2.dll
DevExpress.XtraGrid.9.2.dll
DevExpress.Data.9.2.dll
DevExpress.Utils.9.2.dll
Темы, поднимаемые в сообщении:
конструктор,
скрипт,
табличный контрол,
C#,
DevExpress,
HowTo
Добавление новой строки в табличный контрол из скрипта
Оговорю сразу, что данный метод работает, если для табличного контрола создана отдельная секция в карточке, так как добавление происходит через добавление записи в секцию.
Рассмотрим на примере таблицы, содержащей 3 столбца: Дату, идентификатор сотрудника и некоторый текст.
в приведенном скрипте:
secComment - это идентификатор табличной секции(Guid);
comment - какая-то строка(string)
Скрипт записывает текущую дату, пользователя, который открыл карточку в данный момент и некоторый текст.
Рассмотрим на примере таблицы, содержащей 3 столбца: Дату, идентификатор сотрудника и некоторый текст.
в приведенном скрипте:
secComment - это идентификатор табличной секции(Guid);
comment - какая-то строка(string)
Скрипт записывает текущую дату, пользователя, который открыл карточку в данный момент и некоторый текст.
Guid g = Guid.NewGuid(); CardData.Sections[secComment].BeginUpdate(); RowData newComment = CardData.Sections[secComment].CreateRow(g); newComment.SetString("Текст", comment); newComment.SetGuid("Автор", new EmployeeMapper(Session).GetCurrentUserId()); newComment.SetDateTime("Дата", DateTime.Now); CardData.Sections[secComment].EndUpdate();
Темы, поднимаемые в сообщении:
конструктор,
скрипт,
табличный контрол,
HowTo
Подписаться на:
Сообщения (Atom)