internal DataGridContextAutomationPeer(
            DataGridControl dataGridControl,
            DataGridContext parentDataGridContext,
            object parentItem,
            DetailConfiguration detailConfiguration)
        {
            if (dataGridControl == null)
            {
                throw new ArgumentNullException("dataGridControl");
            }

            if (parentDataGridContext == null)
            {
                m_dataGridContext = dataGridControl.DataGridContext;
            }
            else
            {
                m_dataGridContext = parentDataGridContext.GetChildContext(parentItem, detailConfiguration);
            }

            if (m_dataGridContext != null)
            {
                m_dataGridContext.Peer = this;
            }

            m_dataGridControl       = dataGridControl;
            m_parentDataGridContext = parentDataGridContext;
            m_parentItem            = parentItem;
            m_detailConfiguration   = detailConfiguration;

            m_dataChildren         = new Hashtable(0);
            m_headerFooterChildren = new Hashtable(0);
        }
    internal DataGridContextAutomationPeer(
      DataGridControl dataGridControl,
      DataGridContext parentDataGridContext,
      object parentItem,
      DetailConfiguration detailConfiguration )
    {
      if( dataGridControl == null )
        throw new ArgumentNullException( "dataGridControl" );

      if( parentDataGridContext == null )
      {
        m_dataGridContext = dataGridControl.DataGridContext;
      }
      else
      {
        m_dataGridContext = parentDataGridContext.GetChildContext( parentItem, detailConfiguration );
      }

      if( m_dataGridContext != null )
        m_dataGridContext.Peer = this;

      m_dataGridControl = dataGridControl;
      m_parentDataGridContext = parentDataGridContext;
      m_parentItem = parentItem;
      m_detailConfiguration = detailConfiguration;

      m_dataChildren = new Hashtable( 0 );
      m_headerFooterChildren = new Hashtable( 0 );
    }
Esempio n. 3
0
        public static IEnumerable <DiffItemInfo> GetVisibleItems(DataGridContext gridContext)
        {
            foreach (var item in gridContext.Headers)
            {
                yield return(new DiffItemInfo(gridContext, item));
            }

            foreach (var item in gridContext.Items)
            {
                yield return(new DiffItemInfo(gridContext, item));

                foreach (var detail in gridContext.DetailConfigurations)
                {
                    var childContext = gridContext.GetChildContext(item, detail);
                    if (childContext != null)
                    {
                        foreach (var i in GetVisibleItems(childContext))
                        {
                            yield return(i);
                        }
                    }
                }
            }

            foreach (var item in gridContext.Footers)
            {
                yield return(new DiffItemInfo(gridContext, item));
            }
        }
        public static IEnumerable <object> GetScrollableItems(this DataGridContext gridContext)
        {
            foreach (var item in gridContext.Headers)
            {
                yield return(item);
            }

            foreach (var item in gridContext.Items)
            {
                yield return(item);

                foreach (var detail in gridContext.DetailConfigurations)
                {
                    var childContext = gridContext.GetChildContext(item, detail);
                    if (childContext != null)
                    {
                        foreach (var i in GetScrollableItems(childContext))
                        {
                            yield return(i);
                        }
                    }
                }
            }

            foreach (var item in gridContext.Footers)
            {
                yield return(item);
            }
        }
        private static IEnumerable <DataGridContext> GetChildContexts(DataGridContext dataGridContext, object item)
        {
            Debug.Assert(dataGridContext != null);
            Debug.Assert(item != null);

            return(from detailConfig in dataGridContext.DetailConfigurations
                   let childContext = dataGridContext.GetChildContext(item, detailConfig)
                                      where (childContext != null)
                                      select childContext);
        }
Esempio n. 6
0
        void ExpandOrCollpase(object item, DataGridContext context, bool IsExpand)
        {
            if (item == null || context == null)
            {
                return;
            }

            if (!context.AreDetailsExpanded(item) && IsExpand)
            {
                context.ExpandDetails(item);
            }
            else if (!IsExpand)
            {
                context.CollapseDetails(item);
                return;
            }
            else
            {
                return;
            }

            var itemType = item.GetType();

            // перебираем все дочерние ветки
            foreach (var detail in context.DetailConfigurations)
            {
                var childContext = context.GetChildContext(item, detail.RelationName);

                // смотрим, не пустая ли ветка
                if ((childContext != null) && (childContext.Items.Count > 0) && (detail.Visible))
                {
                    var propertyInfo  = itemType.GetProperty(detail.RelationName);
                    var childrenItems = propertyInfo.GetValue(item, null) as IEnumerable;
                    if (childrenItems != null)
                    {
                        foreach (var childrenItem in childrenItems)
                        {
                            // строим дочернюю ветку со смещением первого столбца на 1 вправо
                            ExpandOrCollpase(childrenItem, childContext, IsExpand);
                        }
                    }
                }
            }
        }
Esempio n. 7
0
        public static IEnumerable <DiffItemInfo> GetItems(DataGridContext gridContext)
        {
            for (var i = 0; i < gridContext.Items.Count; i++)
            {
                var item = gridContext.Items.GetItemAt(i);
                yield return(new DiffItemInfo(gridContext, item));

                for (var j = 0; j < gridContext.DetailConfigurations.Count; j++)
                {
                    var detail       = gridContext.DetailConfigurations[j];
                    var childContext = gridContext.GetChildContext(item, detail);
                    if (childContext != null)
                    {
                        foreach (var childItem in GetItems(childContext))
                        {
                            yield return(childItem);
                        }
                    }
                }
            }
        }
        public static object GetPrevItem(this DataGridContext gridContext, object currentItem, bool ignoreChilds)
        {
            var index     = gridContext.Items.IndexOf(currentItem);
            var prevIndex = index - 1;

            if (ignoreChilds == false)
            {
                for (var i = gridContext.DetailConfigurations.Count - 1; i >= 0; i--)
                {
                    var detail       = gridContext.DetailConfigurations[i];
                    var childContext = gridContext.GetChildContext(currentItem, detail);
                    if (childContext != null)
                    {
                        if (childContext.Items.Count > 0)
                        {
                            return(childContext.Items.GetItemAt(childContext.Items.Count - 1));
                        }
                    }
                }
            }

            if (prevIndex < 0)
            {
                if (gridContext.ParentDataGridContext != null)
                {
                    return(GetPrevItem(gridContext.ParentDataGridContext, gridContext.ParentItem, true));
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                return(gridContext.Items.GetItemAt(prevIndex));
            }
        }
        public static object GetNextItem(this DataGridContext gridContext, object currentItem, bool ignoreChilds)
        {
            var index     = gridContext.Items.IndexOf(currentItem);
            var nextIndex = index + 1;

            if (ignoreChilds == false)
            {
                foreach (var detail in gridContext.DetailConfigurations)
                {
                    var childContext = gridContext.GetChildContext(currentItem, detail);
                    if (childContext != null)
                    {
                        if (childContext.Items.Count > 0)
                        {
                            return(childContext.Items.GetItemAt(0));
                        }
                    }
                }
            }

            if (gridContext.Items.Count <= nextIndex)
            {
                if (gridContext.ParentDataGridContext != null)
                {
                    return(GetNextItem(gridContext.ParentDataGridContext, gridContext.ParentItem, true));
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                return(gridContext.Items.GetItemAt(nextIndex));
            }
        }