示例#1
0
        private void pivotGridControl1_PopupMenuShowing(object sender, PopupMenuShowingEventArgs e)
        {
            FieldValueElement fvElement = e.TargetElement as FieldValueElement;

            if (fvElement == null)
            {
                return;
            }

            FieldValueElementData valueItem = fvElement.ElementData as FieldValueElementData;

            if (valueItem.IsLastLevelItem)
            {
                string       itemCaption = string.Format("Top 5 Values in this {0}", valueItem.IsColumn ? "Column" : "Row");
                BarCheckItem item        = new BarCheckItem {
                    Content = itemCaption
                };
                if (IsTopFiveValuesApplied(valueItem))
                {
                    item.IsChecked = true;
                }
                item.CheckedChanged += Item_CheckedChanged;

                item.Tag = valueItem;
                e.Customizations.Add(new AddBarItemAction {
                    Item = item
                });
            }
        }
示例#2
0
        private static bool IsTopFiveValuesApplied(FieldValueElementData valueItem)
        {
            var fields = valueItem.PivotGrid.GetFieldsByArea(valueItem.IsColumn ? FieldArea.RowArea : FieldArea.ColumnArea);

            if (fields.Count == 0)
            {
                return(false);
            }
            var conditions = GetConditions(valueItem);

            foreach (PivotGridField f in fields)
            {
                if (f.TopValueCount != 5)
                {
                    return(false);
                }
                if (conditions.Count != f.SortByConditions.Count)
                {
                    return(false);
                }
                for (int i = 0; i < conditions.Count; i++)
                {
                    if (f.SortByConditions[i].Field != conditions[i].Key ||
                        f.SortByConditions[i].Value != conditions[i].Value)
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }
示例#3
0
        private static List <KeyValuePair <PivotGridField, object> > GetConditions(FieldValueElementData valueItem)
        {
            var fields = valueItem.PivotGrid.GetFieldsByArea(valueItem.IsColumn ? FieldArea.ColumnArea : FieldArea.RowArea).Where(f => f.AreaIndex <= valueItem.Field.AreaIndex);

            return(fields.
                   Select(f => new KeyValuePair <PivotGridField, object>(f,
                                                                         valueItem.PivotGrid.GetFieldValue(f, valueItem.MinIndex)
                                                                         )).ToList());
        }
示例#4
0
        void SetImageSource()
        {
            FieldValueElementData item = this.DataContext as FieldValueElementData;

            if (item != null && !item.IsOthersRow && !string.IsNullOrEmpty(item.DisplayText))
            {
                ImageSource = CategoriesControl.GetImage(item.Value as string);
            }
            else
            {
                ImageSource = null;
            }
        }
示例#5
0
        private void Item_CheckedChanged(object sender, ItemClickEventArgs e)
        {
            BarCheckItem          item        = sender as BarCheckItem;
            FieldValueElementData elementData = e.Item.Tag as FieldValueElementData;

            if ((bool)item.IsChecked)
            {
                SetTopFiveValues(elementData);
            }
            else
            {
                ResetTopFiveValues(elementData.PivotGrid);
            }
        }
示例#6
0
        private static void SetTopFiveValues(FieldValueElementData valueItem)
        {
            var sortConditions = GetConditions(valueItem);

            valueItem.PivotGrid.BeginUpdate();
            ResetTopFiveValues(valueItem.PivotGrid);
            valueItem.PivotGrid.GetFieldsByArea(valueItem.IsColumn ? FieldArea.RowArea : FieldArea.ColumnArea).ForEach(f => {
                f.SortOrder   = FieldSortOrder.Descending;
                f.SortByField = valueItem.DataField;
                f.SortByConditions.Clear();
                f.SortByConditions.AddRange(sortConditions.Select(c => new SortByCondition(c.Key, c.Value)));
                f.TopValueCount      = 5;
                f.TopValueShowOthers = true;
            });
            valueItem.PivotGrid.EndUpdate();
        }