コード例 #1
0
        public override object GetValue(object component)
        {
            var outerRowItem = component as RowItem;

            if (null == outerRowItem)
            {
                return(null);
            }
            var reportRow = outerRowItem.Value as GroupedRow;

            if (null == reportRow)
            {
                return(null);
            }
            IEnumerable <RowItem> innerRows;

            if (null == OuterPivotKey)
            {
                innerRows = reportRow.InnerRows;
            }
            else
            {
                RowItem innerRow;
                if (!reportRow.TryGetInnerRow(OuterPivotKey, out innerRow))
                {
                    return(null);
                }
                innerRows = new[] { innerRow };
            }

            var values = new List <object>();

            foreach (var innerRow in innerRows)
            {
                var value = DisplayColumn.GetValue(innerRow, InnerPivotKey);
                if (null != value)
                {
                    values.Add(value);
                }
            }
            var distinctValues = values.Distinct().ToArray();

            if (distinctValues.Length == 0)
            {
                return(null);
            }
            else if (distinctValues.Length == 1)
            {
                return(distinctValues[0]);
            }
            else
            {
                return(null);
            }
        }