示例#1
0
        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;
        }
示例#2
0
        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();
                }
            }
        }
示例#3
0
        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();
                }
            }
        }