Всем привет. Помогите разобраться.
Нужно добавить новое представление на секцию.
Переопределил getDefaultDataViews, добавил в него новое представление. Получилось вот так:
Кнопка появилась, только вот только нету никаких данных.
Что нужно делать.(В документации не нашел)(Исходник прикрепил)
Нравится
Ну по хорошему вам прямая дорога в ActivitySectionV2 (посмотреть как там реализован sheduler).
Чисто на уровне теории: при переключении между разными view перещёлкиваются булевы включатели -> исчезает, допустим, грид, появляется либо новый грид и рефрешится коллекция данных под него, либо какие-то кнопки/списки/детали/др. визуальные элементы + запускаются методы под их наполнение.
В любом случае это куча переключателей и биндов на visible.
Здравствуйте!
Пример: добавление нового представления реестра контактов, в котором будут контакты только с типом B2B:
define("ContactSectionV2", ["GlbClientConstants"], function(clientConstants) { return { entitySchemaName: "Contact", details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/, attributes: {}, methods: { getDefaultDataViews: function() { var baseDataViews = this.callParent(arguments); baseDataViews.GridDataViewB2B = { name: "GridDataViewB2B", caption: this.get("Resources.Strings.B2BButtonCaption"), // Section header hint: this.get("Resources.Strings.B2BButtonCaption"), // Hint for button icon: this.get("Resources.Images.B2BDataViewIcon") // Image for button }; return baseDataViews; }, loadActiveViewData: function() { var activeViewName = this.getActiveViewName(); if (activeViewName === "GridDataViewB2B") { this.loadGridData(); } this.callParent(arguments); }, loadGridDataView: function(loadData) { var gridData = this.getGridData(); if (gridData && loadData) { gridData.clear(); } this.setViewFilter(this.get("ActiveViewName")); this.reloadGridColumnsConfig(false); this.reloadSummaryModule(); this.callParent(arguments); }, loadGridDataViewB2B: function(loadData) { // "load" + DataView.name this.loadGridDataView(loadData); }, setActiveView: function(activeViewName) { this.callParent(arguments); if (activeViewName === "GridDataViewB2B") { this.set("IsGridDataViewVisible", true); } }, setViewFilter: function(activeViewName) { // Add filter for your "DataView" var sectionFilters = this.get("SectionFilters"); if (activeViewName === "GridDataViewB2B") { sectionFilters.add("FilterB2BType", this.Terrasoft.createColumnFilterWithParameter( this.Terrasoft.ComparisonType.EQUAL, "Type", clientConstants.ContactTypes.B2B)); } else { sectionFilters.removeByKey("FilterB2BType"); } } } }; });
Также можно действительно смотреть примеры реализации в базовом функционале, как подсказал Варфоломеев Данила