Esempio n. 1
0
        private PivotSortOrder?GetSummarySortOrder(PivotFieldValueItem valueItem)
        {
            if (!valueItem.IsLastFieldLevel)
            {
                return(null);
            }
            List <PivotGridFieldPair> pairs = valueItem.SortedBySummaryFields;

            if (pairs == null)
            {
                return(null);
            }
            PivotSortOrder?sortOrder = null;

            foreach (PivotGridFieldPair pair in pairs)
            {
                if (pair.DataFieldItem != valueItem.DataField)
                {
                    continue;
                }
                if (sortOrder != null)
                {
                    if (sortOrder.Value != pair.FieldItem.SortOrder)
                    {
                        sortOrder = null;
                        break;
                    }
                }
                sortOrder = pair.FieldItem.SortOrder;
            }
            return(sortOrder);
        }
Esempio n. 2
0
        private void pivotGridControl1_CustomDrawFieldValue(object sender, PivotCustomDrawFieldValueEventArgs e)
        {
            PivotFieldValueItem valueItem = GetItem(e);
            PivotSortOrder?     sortOrder = GetSummarySortOrder(valueItem);

            if (sortOrder == null)
            {
                return; // proceed to standard drawing
            }
            PivotGridViewInfoData data = ((IPivotGridViewInfoDataOwner)pivotGridControl1).DataViewInfo;

            e.Info.InnerElements.Clear();
            data.ActiveLookAndFeel.Painter.Header.DrawObject(e.Info);
            SortedShapeObjectInfoArgs sortInfo = new SortedShapeObjectInfoArgs();

            sortInfo.Ascending = sortOrder == PivotSortOrder.Ascending;
            sortInfo.Graphics  = e.Graphics;
            Rectangle sortBounds = data.ActiveLookAndFeel.Painter.SortedShape.CalcObjectMinBounds(sortInfo);

            sortBounds.X    = e.Info.CaptionRect.Right + 2;
            sortBounds.Y    = e.Info.CaptionRect.Y + (int)Math.Round((double)(e.Info.CaptionRect.Height - sortBounds.Height) / 2);
            sortInfo.Bounds = sortBounds;
            data.ActiveLookAndFeel.Painter.SortedShape.DrawObject(sortInfo);
            e.Handled = true;
        }
Esempio n. 3
0
 private int GetFieldIndex(PivotFieldValueItem valueItem)
 {
     if (valueItem == null || valueItem.Field == null)
     {
         return(-1); // Grand Total Cell
     }
     if (valueItem.IsDataFieldItem)
     {
         return(GetFieldIndex(valueItem.Parent)); //Find the parent field of a Data Field cell
     }
     return(valueItem.Field.Index);
 }
Esempio n. 4
0
        public void InstantiateIn(Control container)
        {
            PivotGridFieldValueTemplateContainer c    = (PivotGridFieldValueTemplateContainer)container;
            PivotGridFieldValueHtmlCell          cell = c.CreateFieldValue();
            PivotFieldValueItem      valueItem        = c.ValueItem;
            PivotDrillDownDataSource ds = valueItem.CreateDrillDownDataSource();
            int id = Convert.ToInt32(ds[0]["ProductID"]);

            cell.Controls.AddAt(cell.Controls.IndexOf(cell.TextControl), new MyLink(c.Text, id));
            cell.Controls.Remove(cell.TextControl);
            c.Controls.Add(cell);
        }
Esempio n. 5
0
 private bool HaveSingleChild(PivotGridData data, PivotFieldValueItem valueItem)
 {
     if (valueItem.MinLastLevelIndex == valueItem.MaxLastLevelIndex)
     {
         return(true);
     }
     else
     {
         var nestedField = data.GetFieldByArea(valueItem.Area, valueItem.Field.AreaIndex + 1);
         IEnumerable <DevExpress.XtraPivotGrid.PivotDrillDownDataRow> rows = valueItem.CreateDrillDownDataSource().Cast <DevExpress.XtraPivotGrid.PivotDrillDownDataRow>();
         return(rows.Select(row => row[nestedField]).Distinct().Count() == 1);
     }
 }
Esempio n. 6
0
        public void InstantiateIn(Control container)
        {
            PivotGridFieldValueTemplateContainer c    = (PivotGridFieldValueTemplateContainer)container;
            PivotGridFieldValueHtmlCell          cell = c.CreateFieldValue();
            PivotFieldValueItem      valueItem        = c.ValueItem;
            PivotFieldValueEventArgs helperArgs       = new PivotFieldValueEventArgs(valueItem);

            PivotGridField[] fields      = helperArgs.GetHigherLevelFields();
            List <object>    fieldValues = new List <object>();

            foreach (PivotGridField field in fields)
            {
                object currentValue = helperArgs.GetHigherLevelFieldValue(field);
                if (currentValue != null)
                {
                    fieldValues.Add(currentValue);
                }
            }

            cell.Controls.AddAt(cell.Controls.IndexOf(cell.TextControl), new MyLink(c.Text, fieldValues));
            cell.Controls.Remove(cell.TextControl);
            c.Controls.Add(cell);
        }
Esempio n. 7
0
    private bool GetParentItem(PivotGridData data, int rowIndex, int level, out PivotFieldValueItem parentValueItem)
    {
        parentValueItem = null;
        if (level < 1)
        {
            return(false);
        }
        PivotFieldValueItem valueItem = data.VisualItems.GetItem(false, rowIndex, level - 1);

        if (valueItem != null && valueItem.Field != null && HaveSingleChild(data, valueItem))
        {
            parentValueItem = valueItem;
            if (level > 1 && GetParentItem(data, rowIndex, level - 1, out valueItem))
            {
                parentValueItem = valueItem;
            }
            return(true);
        }
        else
        {
            return(false);
        }
    }