Несколько источников данных на странице....
1. Можно ли использовать несколько источников данных?
2. Как система определяет кто из них кто? Я так понимаю из настроек раздела в рабочем месте?
3. Как с источниками данных работать? То есть я хочу понять какие данные туда грузится будут, как этим управлять и т.д.
Нравится
Здравствуйте, Александр!
"Шамуилов Александр" написал:1. Можно ли использовать несколько источников данных?
Несколько источников данных на одной странице использовать можно, для этого нужно инициализировать датасорс, то есть установить для него обработчики событий и прописать его в скрипте Init и PageLoadComplete. Пример можно найти в BaseEditPage или BaseGridPage.
2. Как система определяет кто из них кто? Я так понимаю из настроек раздела в рабочем месте?
Для датасорса раздела - действительно по настройке рабочих мест, но там он используется для групп раздела и деталей. Для реестра и карточки редактирования - в зависимости от того, какой источник данных выбран в невизуальном элементе DataSource на странице:
3. Как с источниками данных работать? То есть я хочу понять какие данные туда грузится будут, как этим управлять и т.д.
Список колонок, которые грузятся, определяется там же, на странице. При выборе источника данных автоматически подтягиваются все колонки. В случае необходимости ненужные можно удалить, за исключением колонки Id - она обязательно должна быть в реестре и для нее обязательно должен быть установлен признак "Всегда загружать данные", т. к. по ней фильтруется содержимое деталей.
Использование нескольких датасорсов на странице не рекомендуется - entity устроен таким образом, что через обратные связи можно вытянуть любую связанную информацию. То есть, Вы можете в основной датасорс добавить связанную информацию:
В случае, если информация не связана на прямую на уровне ключей СУБД, тогда можно обратиться к объекту из кода:
var entitySchemaManager = Page.Schema.SchemaManagerProvider.GetManager("EntitySchemaManager") as EntitySchemaManager; var DocumentSchemaQuery = new EntitySchemaQuery(entitySchemaManager, "Document"); //название схемы объекта DocumentSchemaQuery.AddColumn(DocumentSchemaQuery.RootSchema.GetPrimaryColumnName()); DocumentSchemaQuery.AddColumn("Account.Id"); // определяем каждую из колонок, с которыми мы будем работать DocumentSchemaQuery.AddColumn("Type.Id"); DocumentSchemaQuery.AddColumn("Status.Id"); DocumentSchemaQuery.Filters.Add(DocumentSchemaQuery.CreateFilterWithParameters(FilterComparisonType.Equal, "Account.Id", new Guid(AccountId))); //фильтр запроса DocumentSchemaQuery.Filters.Add(DocumentSchemaQuery.CreateFilterWithParameters(FilterComparisonType.Equal, "Type.Id", new Guid(TypeId))); DocumentSchemaQuery.Filters.Add(DocumentSchemaQuery.CreateFilterWithParameters(FilterComparisonType.Equal, "Status.Id", new Guid(StatusId))); var DocumentEntity = DocumentSchemaQuery.GetEntityCollection(UserConnection); if (DocumentEntity.Count > 0) { //делаем что-то с содержимым } else { return false; } return true;
В результате в Entity мы получаем необходимый объект, и можем с ним работать точно так же, как с объектом раздела.