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 ); }
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); }
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); } } } } }
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)); } }