Example #1
0
        /// <summary>
        /// Initializes the data source connected to this band.
        /// </summary>
        public void InitDataSource()
        {
            if (DataSource == null)
            {
                DataSource = new VirtualDataSource();
                DataSource.SetReport(Report);
            }

            if (DataSource is VirtualDataSource)
            {
                (DataSource as VirtualDataSource).VirtualRowsCount = RowCount;
            }

            DataSourceBase parentDataSource = ParentDataBand == null ? null : ParentDataBand.DataSource;
            bool           collectChildRows = ParentDataBand == null ? false : ParentDataBand.CollectChildRows;

            if (Relation != null)
            {
                DataSource.Init(Relation, Filter, Sort, collectChildRows);
            }
            else
            {
                DataSource.Init(parentDataSource, Filter, Sort, collectChildRows);
            }
        }
        protected override Entity CreateDayVirtualDataSourceRow(VirtualDataSource daysDataSource,
                                                                DayInCalendarObject day, Guid gridRecordId)
        {
            Entity row = base.CreateDayVirtualDataSourceRow(daysDataSource, day, gridRecordId);

            row.SetColumnValue(DateStringVirtualColumnName, day.Date.ToString("ddd dd MMMM yyyy"));
            return(row);
        }
        /// <summary>
        /// ####### ########### ######### ### ######### # ############ ## ########### #######
        /// </summary>
        protected VirtualDataSource CreateDaysVirtualDataSource()
        {
            var virtualDataSource = new VirtualDataSource {
                ID = DaysVirtualDataSourceName
            };

            virtualDataSource.Loaded        += DaysTreeGrid.DataLoaded;
            virtualDataSource.RowUpdated    += DaysTreeGrid.RowUpdated;
            DaysTreeGrid.GetRowConfigHandler = GetTreeGridRowConfig;
            return(virtualDataSource);
        }
        /// <summary>
        /// ######## ########### ######### ### #########
        /// </summary>
        /// <param name="treeGridRecordId">############# ### ######### # ######</param>
        protected void RefreshDayVirtualDataSourceRecord(Guid treeGridRecordId)
        {
            VirtualDataSource   dataSource          = GetDaysVirtualDataSource();
            DayInCalendarObject actualDayInCalendar = GetDay(treeGridRecordId);

            CurrentDaysGridData[treeGridRecordId] = actualDayInCalendar;
            Entity row = CreateDayVirtualDataSourceRow(dataSource, actualDayInCalendar, treeGridRecordId);

            dataSource.Update(row);
            dataSource.LoadRow(treeGridRecordId);
        }
        /// <summary>
        /// ################ ########### ######### ### #########
        /// </summary>
        protected void RegisterDaysVirtualDataSource()
        {
            VirtualDataSource dataSource = GetDaysVirtualDataSource();

            if (dataSource != null)
            {
                return;
            }
            dataSource = CreateDaysVirtualDataSource();
            InitializeDaysVirtualDataSource(dataSource);
            dataSource.LoadStructure();
            _page.PageContainer.Controls.Add(dataSource);
        }
        /// <summary>
        /// ######### ########### ######### ### #########
        /// </summary>
        protected virtual void FillVirtualDataSource()
        {
            IEnumerable <DayInCalendarObject> days = GetDays();
            VirtualDataSource daysDataSource       = GetDaysVirtualDataSource();

            daysDataSource.Clear();
            CurrentDaysGridData.Clear();
            foreach (DayInCalendarObject day in days)
            {
                Guid   gridRecordId = Guid.NewGuid();
                Entity row          = CreateDayVirtualDataSourceRow(daysDataSource, day, gridRecordId);
                daysDataSource.Add(row);
                CurrentDaysGridData.Add(gridRecordId, day);
            }
        }
        /// <summary>
        /// ########## #### ######### ## #########
        /// </summary>
        /// <returns>############# ### # ######</returns>
        protected virtual Guid SelectDefaultDayRecord()
        {
            Guid gridRecordId = Guid.Empty;

            if (!CurrentDaysGridData.Any())
            {
                return(gridRecordId);
            }
            VirtualDataSource dataSource = GetDaysVirtualDataSource();

            gridRecordId = GetFirstDayInCalendarData().Key;
            dataSource.SetClientActiveRow(gridRecordId);
            dataSource.SetActiveRow(gridRecordId);
            DaysTreeGrid.SelectNode(gridRecordId.ToString(), true);
            return(gridRecordId);
        }
        /// <summary>
        /// ####### ###### # ########### ########## ### #########
        /// </summary>
        /// <param name="daysDataSource">########### ######### ### #########</param>
        /// <param name="day">###### ### #########</param>
        /// <param name="gridRecordId">############# ### ######### # ######</param>
        /// <returns>######## ### ######### # ##########</returns>
        protected virtual Entity CreateDayVirtualDataSourceRow(VirtualDataSource daysDataSource, DayInCalendarObject day,
                                                               Guid gridRecordId)
        {
            Entity row = daysDataSource.CreateRow();

            row.SetColumnValue("DayOfWeekId", day.DayOfWeekId);
            row.SetColumnValue("DayOfWeekName", GetDayOfWeekNames()[day.DayOfWeekId]);
            row.SetColumnValue("DayTypeId", day.DayTypeId);
            row.SetColumnValue("DayTypeName", GetDayTypeNames()[day.DayTypeId]);
            row.SetColumnValue("CalendarId", day.CalendarId);
            row.SetColumnValue(GridRecordIdColumnName, gridRecordId);
            if (day.Date.Date != DateTime.MinValue.Date)
            {
                row.SetColumnValue("Date", day.Date);
            }
            return(row);
        }
        protected override void InitializeDaysVirtualDataSource(VirtualDataSource virtualDataSource)
        {
            DataSourceStructure structure = virtualDataSource.DefStructure;
            var dataValueTypeManager      =
                (DataValueTypeManager)UserConnection.AppManagerProvider.GetManager("DataValueTypeManager");
            var dateStringColumn = new DataSourceStructureColumn {
                Name          = DateStringVirtualColumnName,
                DataValueType = dataValueTypeManager.GetInstanceByName("MediumText"),
                IsVisible     = true,
                Caption       = DataVirtualColumnCaption,
                IsHideable    = false,
                IsSortable    = false,
                MenuDisabled  = true
            };

            structure.AddColumn(dateStringColumn);
            base.InitializeDaysVirtualDataSource(virtualDataSource);
        }
        /// <summary>
        /// ################ ########### ######### ### #########
        /// </summary>
        protected virtual void InitializeDaysVirtualDataSource(VirtualDataSource virtualDataSource)
        {
            var dataValueTypeManager =
                (DataValueTypeManager)UserConnection.AppManagerProvider.GetManager("DataValueTypeManager");

            DaysTreeGrid.DataSourceId = virtualDataSource.ID;
            DataSourceStructure edsStructure = DaysEntityDataSource.CurrentStructure;
            DataSourceStructure vdsStructure = virtualDataSource.DefStructure;

            vdsStructure.PrimaryColumnName        = GridRecordIdColumnName;
            vdsStructure.PrimaryDisplayColumnName = edsStructure.PrimaryDisplayColumnName;
            foreach (DataSourceStructureColumn edsColumn in edsStructure.Columns)
            {
                vdsStructure.AddColumn((DataSourceStructureColumn)edsColumn.Clone());
            }
            var treeGridRecordIdColumn = new DataSourceStructureColumn {
                Name          = GridRecordIdColumnName,
                DataValueType = dataValueTypeManager.GetInstanceByName("Guid"),
                IsVisible     = false,
            };

            vdsStructure.AddColumn(treeGridRecordIdColumn);
        }