Exemplo n.º 1
0
        public void Initialize(PivotTableSortTypes sortType, SortDescriptor sortDescriptor)
        {
            SortType         = sortType;
            m_SortDescriptor = sortDescriptor;

            // Инициализируем как сортируем
            if (sortDescriptor == null)
            {
                rbNone.IsChecked = true;
            }
            else
            {
                switch (sortDescriptor.Type)
                {
                case SortTypes.Ascending:
                    rbAscending.IsChecked = true;
                    break;

                case SortTypes.Descending:
                    rbDescending.IsChecked = true;
                    break;

                default:
                    rbNone.IsChecked = true;
                    break;
                }
            }

            // Инициализируем по чем сортируем
            switch (sortType)
            {
            case PivotTableSortTypes.SortByProperty:
                SelectProperty(sortDescriptor != null ? sortDescriptor.SortBy : String.Empty);
                break;

            case PivotTableSortTypes.SortAxisByMeasure:
                SelectMeasure(sortDescriptor != null ? sortDescriptor.SortBy : String.Empty);
                break;

            case PivotTableSortTypes.SortByValue:
                InitializeTuple(sortDescriptor as SortByValueDescriptor);
                break;
            }
        }
		void ShowSortPropertiesDialog(PivotTableSortTypes sortType, MemberControl member)
		{
			ModalDialog dlg;
			SortPropertiesControl sortControl;
			if (sortType == PivotTableSortTypes.SortByValue)
			{
				// Сортировку по значению делаем отдельным диалогом чтобы не думать о сохранении размеров
				if (m_SortByValueDialog == null)
				{
					m_SortByValueDialog = new ModalDialog() { Width = 500, Height = 400, MinHeight = 250, MinWidth = 180, DialogStyle = ModalDialogStyles.OKCancel };
					m_SortByValueDialog.Caption = Localization.SortingSettingsDialog_Caption;
					m_SortByValueDialog.DialogOk += new EventHandler<DialogResultArgs>(SortProperties_DialogOk);
					Panel panel1 = GetRootPanel(this);
					if (panel1 != null)
					{
						panel1.Children.Add(m_SortByValueDialog.Dialog.PopUpControl);
					}
				}

				if (m_SortByValueSettingsControl == null)
				{
					m_SortByValueSettingsControl = new SortPropertiesControl();
					m_SortByValueSettingsControl.CubeName = m_CSDescr != null ? m_CSDescr.CubeName : String.Empty;
					m_SortByValueSettingsControl.ConnectionID = m_CSDescr != null ? m_CSDescr.Connection.ConnectionID : String.Empty;
					m_SortByValueSettingsControl.GetOlapDataLoader += new EventHandler<GetIDataLoaderArgs>(CopyControl_GetMetadataLoader);
					m_SortByValueSettingsControl.LogManager = this.LogManager;

					m_SortByValueSettingsControl.LoadMeasures += new EventHandler<CustomEventArgs<EventArgs>>(m_SortSettingsControl_LoadMeasures);
					m_SortByValueDialog.Content = m_SortByValueSettingsControl;
				}
				sortControl = m_SortByValueSettingsControl;
				dlg = m_SortByValueDialog;
			}
			else
			{
				if (m_SortDialog == null)
				{
					m_SortDialog = new ModalDialog() { Width = 400, Height = 250, MinHeight = 215, MinWidth = 180, DialogStyle = ModalDialogStyles.OKCancel };
					m_SortDialog.Caption = Localization.SortingSettingsDialog_Caption;
					m_SortDialog.DialogOk += new EventHandler<DialogResultArgs>(SortProperties_DialogOk);
					Panel panel1 = GetRootPanel(this);
					if (panel1 != null)
					{
						panel1.Children.Add(m_SortDialog.Dialog.PopUpControl);
					}
				}

				if (m_SortSettingsControl == null)
				{
					m_SortSettingsControl = new SortPropertiesControl();
					m_SortSettingsControl.CubeName = m_CSDescr != null ? m_CSDescr.CubeName : String.Empty;
					m_SortSettingsControl.ConnectionID = m_CSDescr != null ? m_CSDescr.Connection.ConnectionID : String.Empty;
					m_SortSettingsControl.GetOlapDataLoader += new EventHandler<GetIDataLoaderArgs>(CopyControl_GetMetadataLoader);
					m_SortSettingsControl.LogManager = this.LogManager;

					m_SortSettingsControl.LoadMeasures += new EventHandler<CustomEventArgs<EventArgs>>(m_SortSettingsControl_LoadMeasures);
					m_SortDialog.Content = m_SortSettingsControl;
				}
				sortControl = m_SortSettingsControl;
				dlg = m_SortDialog;
			}

			if (dlg == null || sortControl == null)
				return;

			dlg.Tag = sortControl;
			sortControl.Tag = member;

			SortDescriptor sort = null;
			switch (sortType)
			{
				case PivotTableSortTypes.SortByProperty:
					if (m_CellSetProvider != null &&
									member != null &&
									member.Member != null)
					{
						sort = GetAxisPropertySort(member);
					}
					break;
				case PivotTableSortTypes.SortAxisByMeasure:
					sort = GetAxisByMeasureSort(member);
					break;
				case PivotTableSortTypes.SortByValue:
					// Получаем сортировку для противоположной оси. Если это сортировка по значению, то проверяем чтобы это была сортировка для данного элемента. Если нет, то создается новый дескриптор
					if (member is ColumnMemberControl || member is RowMemberControl)
					{
						var value_sort = GetAxisSort(member is ColumnMemberControl ? AreaType.RowsArea : AreaType.ColumnsArea) as SortByValueDescriptor;
						if (value_sort != null && member != null && member.Member != null && value_sort.CompareByTuple(member.Member.GetAxisTuple()))
						{
							sort = value_sort;
						}
					}

					if (sort == null)
					{
						sort = new SortByValueDescriptor();
						if (member != null && member.Member != null)
						{
							(sort as SortByValueDescriptor).Tuple = member.Member.GetAxisTuple();
						}
					}
					break;
			}

			sortControl.Initialize(sortType, sort);
			ShowDialog(dlg);
		}
        public void Initialize(PivotTableSortTypes sortType, SortDescriptor sortDescriptor)
        {
            SortType = sortType;
            m_SortDescriptor = sortDescriptor;

            // Инициализируем как сортируем
            if (sortDescriptor == null)
            {
                rbNone.IsChecked = true;
            }
            else
            {
                switch (sortDescriptor.Type)
                {
                    case SortTypes.Ascending:
                        rbAscending.IsChecked = true;
                        break;
                    case SortTypes.Descending:
                        rbDescending.IsChecked = true;
                        break;
                    default:
                        rbNone.IsChecked = true;
                        break;
                }
            }

            // Инициализируем по чем сортируем
            switch (sortType)
            {
                case PivotTableSortTypes.SortByProperty:
                    SelectProperty(sortDescriptor != null ? sortDescriptor.SortBy : String.Empty);
                    break;
                case PivotTableSortTypes.SortAxisByMeasure:
                    SelectMeasure(sortDescriptor != null ? sortDescriptor.SortBy : String.Empty);
                    break;
                case PivotTableSortTypes.SortByValue:
                    InitializeTuple(sortDescriptor as SortByValueDescriptor);
                    break;
            }
        }