protected internal override void OnQueryItems(VirtualPage page, AsyncQueryInfo queryInfo) { base.OnQueryItems(page, queryInfo); DataGridVirtualizingQueryableCollectionViewGroup collectionViewGroup = this.GetLinkedCollectionViewGroup(page.ParentVirtualList) as DataGridVirtualizingQueryableCollectionViewGroup; IQueryable queryableToUse; int virtualItemCount = collectionViewGroup.VirtualItemCount; bool queryableIsReversed; if ((!m_supportsPrimaryKeyOptimizations) || (queryInfo.StartIndex < (virtualItemCount / 2))) { queryableIsReversed = false; queryableToUse = collectionViewGroup.Queryable.Slice(queryInfo.StartIndex, queryInfo.RequestedItemCount); } else { queryableIsReversed = true; int reversedStartIndex = virtualItemCount - (queryInfo.StartIndex + queryInfo.RequestedItemCount); queryableToUse = collectionViewGroup.ReversedQueryable.Slice(reversedStartIndex, queryInfo.RequestedItemCount); } System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(this.AsyncGatherItems), new object[] { queryInfo, queryableToUse, queryableIsReversed }); }
public DataGridVirtualizingQueryableCollectionViewGroup( object name, int initialItemsCount, int startGlobalIndex, DataGridVirtualizingQueryableCollectionViewGroup parent, int level, bool isBottomLevel ) : base( name, initialItemsCount, startGlobalIndex, parent, level, isBottomLevel ) { }
public DataGridVirtualizingQueryableCollectionViewGroup( object name, int initialItemsCount, int startGlobalIndex, DataGridVirtualizingQueryableCollectionViewGroup parent, int level, bool isBottomLevel) : base(name, initialItemsCount, startGlobalIndex, parent, level, isBottomLevel) { }
protected override int OnQueryItemCountCore(VirtualList virtualList) { if (!this.IsConnected) { return(0); } DataGridVirtualizingQueryableCollectionViewGroup collectionViewGroup = this.GetLinkedCollectionViewGroup(virtualList) as DataGridVirtualizingQueryableCollectionViewGroup; Debug.Assert(collectionViewGroup != null); return(collectionViewGroup.QueryItemCount()); }
internal virtual IQueryable CreateUnsortedFilteredQueryable() { int level = this.Level; Debug.Assert((level > -1), "The DataGridVirtualizingGroupRoot should have overriden this method without calling base."); // Sub group. Only group from parent, which will already be sorted. DataGridVirtualizingQueryableCollectionViewGroup parentCollectionViewGroup = this.Parent as DataGridVirtualizingQueryableCollectionViewGroup; IQueryable parentUnsortedQueryable = parentCollectionViewGroup.UnsortedFilteredQueryable; Debug.Assert(parentUnsortedQueryable != null); if (parentUnsortedQueryable == null) { return(null); } // Narrow the filter to this group's clauses. return(this.FilterQueryable(parentUnsortedQueryable)); }