private void ApplySearchFilter() { if (string.IsNullOrWhiteSpace(SearchTextBox.Text) && IsListFiltered) { if (FilteredBrickList != null && FilteredBrickList.IsSorted) { BrickList.ApplySort(FilteredBrickList.PropertyDescriptor, FilteredBrickList.SortDirection); } BrickGridView.DataSource = BrickList; FilteredBrickList.Clear(); IsListFiltered = false; return; } FilteredBrickList = new SortableBindingList <BrickInfo>( BrickList.Where(x => IsBrickVisible(x)).ToList()); if (BrickList.IsSorted) { FilteredBrickList.ApplySort(BrickList.PropertyDescriptor, BrickList.SortDirection); } BrickGridView.DataSource = FilteredBrickList; IsListFiltered = true; }
private void FillValidatedParts(bool onlyOnce = false) { var validBricks = BrickListCache.GetValidatedBricks(); var newBricks = validBricks.Except(BrickList) .OrderBy(x => x.PartId).ToList(); const int MAX_ADD = 200; //add items in batches to prevent freezing the window while (newBricks.Count > 0) { var range = newBricks.Take(MAX_ADD).ToList(); BrickList.AddRange(range); if (IsListFiltered) { FilteredBrickList.AddRange(range.Where(x => IsBrickVisible(x))); } newBricks.RemoveRange(0, range.Count); if (onlyOnce) { break; } if (newBricks.Count > 0) { Application.DoEvents(); } } }
private void FillValidatedParts(bool onlyOnce = false) { var validBricks = BrickListCache.GetValidatedBricks(); var newBricks = validBricks.Except(BrickList) .OrderBy(x => x.PartId).ToList(); const int MAX_ADD = 200; //add items in batches to prevent freezing the window while (newBricks.Count > 0) { var range = newBricks.Take(MAX_ADD).ToList(); var curScrollRow = BrickGridView.FirstDisplayedScrollingRowIndex; IsUpdatingList = true; BrickList.AddRange(range); if (IsListFiltered) { FilteredBrickList.AddRange(range.Where(x => IsBrickVisible(x))); } if (curScrollRow >= 0 && curScrollRow != BrickGridView.FirstDisplayedScrollingRowIndex) { //fix to prevent scrolling back to first row BrickGridView.FirstDisplayedScrollingRowIndex = curScrollRow; } IsUpdatingList = false; newBricks.RemoveRange(0, range.Count); if (onlyOnce) { break; } if (newBricks.Count > 0) { Application.DoEvents(); } } }