コード例 #1
0
        protected override void ApplySortCore(PropertyDescriptor property, ListSortDirection direction)
        {
            _sortProperty  = property;
            _sortDirection = direction;

            // Get list to sort
            List <T> items = Items as List <T>;

            // Apply and set the sort, if items to sort
            if (items != null)
            {
                ListSortDescription   sort    = new ListSortDescription(property, direction);
                ListSortDescription[] sortArr = new ListSortDescription[_sortDescriptions.Count + 1];
                _sortDescriptions.CopyTo(sortArr, 1);
                sortArr[0]        = sort;
                _sortDescriptions = new ListSortDescriptionCollection(sortArr);
                ApplySort(_sortDescriptions);
                _isSorted = true;
            }
            else
            {
                _isSorted = false;
            }

            // Let bound controls know they should refresh their views
            OnListChanged(new ListChangedEventArgs(ListChangedType.Reset, -1));
        }
コード例 #2
0
    public void ApplySort(ListSortDescriptionCollection sorts)
    {
        // Get list to sort
        // Note: this.Items is a non-sortable ICollection<T>
        List <T> items = this.Items as List <T>;

        // Apply and set the sort, if items to sort
        if (items != null)
        {
            _SortDescriptions = sorts;
            comparers         = new List <PropertyComparer <T> >();
            foreach (ListSortDescription sort in sorts)
            {
                comparers.Add(new PropertyComparer <T>(sort.PropertyDescriptor,
                                                       sort.SortDirection));
            }
            items.Sort(CompareValuesByProperties);
            //_isSorted = true;
        }
        else
        {
            //_isSorted = false;
        }

        this.OnListChanged(new ListChangedEventArgs(ListChangedType.Reset, -1));
    }
コード例 #3
0
        void IBindingListView.ApplySort(ListSortDescriptionCollection sorts)
        {
            if (sorts == null || sorts.Count < 1)
            {
                return;
            }

            var list = InnerList as EntityList <T>;

            if (list == null || list.Count < 1)
            {
                return;
            }

            var ns = new List <string>();
            var ds = new List <Boolean>();

            foreach (ListSortDescription item in sorts)
            {
                ns.Add(item.PropertyDescriptor.Name);
                ds.Add(item.SortDirection == ListSortDirection.Descending);
            }

            list.Sort(ns.ToArray(), ds.ToArray());

            SortDescriptions = sorts;

            OnListChanged(ResetEventArgs);
        }
コード例 #4
0
        public void Sort(IDictionary <string, bool> columns)
        {
            if (columns != null && columns.Count > 0)
            {
                Guid selectedId = default(Guid);
                if (SelectedRow != null && SelectedRow.Index > -1)
                {
                    selectedId = (Guid)SelectedRow.Cells[QueueColumns.Id.Name].Value;
                }

                ListSortDescription[] sortArray = new ListSortDescription[columns.Count];

                int columnIndex = 0;
                foreach (KeyValuePair <string, bool> column in columns)
                {
                    ListSortDirection  direction = (column.Value) ? ListSortDirection.Ascending : ListSortDirection.Descending;
                    PropertyDescriptor property  = TypeDescriptor.GetProperties(typeof(IMediaItem))[QueueColumns.ColumnsByPropertyName[column.Key].PropertyName];
                    sortArray[columnIndex] = new ListSortDescription(property, direction);
                    columnIndex++;
                }

                ListSortDescriptionCollection sorts = new ListSortDescriptionCollection(sortArray);

                grid.Sort(sorts);

                DrawSortGlyphs(columns);
            }
        }
コード例 #5
0
        public void SortDescriptionTest()
        {
            IBindingListView view = new DataView(_table);

            ListSortDescriptionCollection col = view.SortDescriptions;

            ((DataView)view).Sort = "";
            col = view.SortDescriptions;
            Assert.Equal(0, col.Count);

            ((DataView)view).Sort = null;
            col = view.SortDescriptions;
            Assert.Equal(0, col.Count);

            ((DataView)view).Sort = "col1 DESC, col2 ASC";
            col = view.SortDescriptions;
            Assert.Equal(2, col.Count);
            Assert.Equal("col1", col[0].PropertyDescriptor.Name);
            Assert.Equal(ListSortDirection.Descending, col[0].SortDirection);
            Assert.Equal("col2", col[1].PropertyDescriptor.Name);
            Assert.Equal(ListSortDirection.Ascending, col[1].SortDirection);

            //ApplySort Test
            IBindingListView view1 = new DataView(_table);

            Assert.False(view.Equals(view1));
            view1.ApplySort(col);
            Assert.Equal("[col1] DESC,[col2]", ((DataView)view1).Sort);
            for (int i = 0; i < view.Count; ++i)
            {
                Assert.Equal(((DataView)view)[i].Row, ((DataView)view1)[i].Row);
            }
        }
コード例 #6
0
        /// <summary>
        /// Core sort function. All sorting function uses this method.
        /// If the ListSortDescriptionCollection are the same stored
        /// in the collection, the collection is sorted yet,
        /// so it returns immediately
        /// </summary>
        /// <param name="sorts">List of SortDescription</param>
        public void ApplySort(ListSortDescriptionCollection sorts)
        {
            if (sorts == null)
            {
                return;
            }
            bool bMatch = false;

            if (_IsSorted && _SortDescriptions != null && _SortDescriptions.Count == sorts.Count)
            {
                bMatch = true;
                for (int i = 0; i < sorts.Count; i++)
                {
                    ListSortDescription ldsSource = sorts[i];
                    ListSortDescription ldsTarget = _SortDescriptions[i];

                    if (ldsSource.PropertyDescriptor != ldsTarget.PropertyDescriptor ||
                        ldsSource.SortDirection != ldsTarget.SortDirection)
                    {
                        bMatch = false;
                        break;
                    }
                }
            }
            // descriptors are the same of previous sort operation? just exit
            if (bMatch)
            {
                return;
            }

            _SortDescriptions = sorts;
            Sort(new DescriptorComparison(sorts));              // IComparer<T>
            _IsSorted = true;
        }
コード例 #7
0
 /// <summary>
 /// Invokes underlying BindingSource's ApplySort method if the source is
 /// connected to a DataSource, does nothing otherwise.
 /// </summary>
 /// <param name="sorts"></param>
 public void ApplySort(ListSortDescriptionCollection sorts)
 {
     if (IsConnectionAvailable())
     {
         ((IBindingListView)source).ApplySort(sorts);
     }
 }
コード例 #8
0
        public void ApplySort(Comparison <T> comparison)
        {
            _descrips = new ListSortDescriptionCollection();
            if (comparison == null)
            {
                if (_filter == null)
                {
                    _filterIds.Clear();
                }
                else
                {
                    _filterIds.Sort();
                }
            }
            else
            {
                if (!_filterIds.Any() && _filter == null)
                {
                    _filterIds.AddRange(Enumerable.Range(0, _list.Count));
                }
                _filterIds.Sort((x, y) => comparison((T)_list[x], (T)_list[y]));
            }

            ResetBindings();
        }
コード例 #9
0
        private IComparer GetSortComparer(ListSortDescriptionCollection sortDescriptions)
        {
            bool needSubstitution = false;

            if (_sortSubstitutions.Count > 0)
            {
                foreach (ListSortDescription sortDescription in sortDescriptions)
                {
                    if (_sortSubstitutions.ContainsKey(sortDescription.PropertyDescriptor.Name))
                    {
                        needSubstitution = true;
                        break;
                    }
                }

                if (needSubstitution)
                {
                    ListSortDescription[] sorts = new ListSortDescription[sortDescriptions.Count];
                    sortDescriptions.CopyTo(sorts, 0);

                    for (int i = 0; i < sorts.Length; i++)
                    {
                        if (_sortSubstitutions.ContainsKey(sorts[i].PropertyDescriptor.Name))
                        {
                            sorts[i] = new ListSortDescription(((SortSubstitutionPair)_sortSubstitutions[sorts[i].PropertyDescriptor.Name]).Substitute,
                                                               sorts[i].SortDirection);
                        }
                    }

                    sortDescriptions = new ListSortDescriptionCollection(sorts);
                }
            }

            return(new SortListPropertyComparer(sortDescriptions));
        }
コード例 #10
0
ファイル: ExDataView.cs プロジェクト: gybing/dms
 void IBindingListView.ApplySort(ListSortDescriptionCollection sorts)
 {
     ListSortDescription[] sortArray = new ListSortDescription[sorts.Count + 1];
     sorts.CopyTo(sortArray, 1);
     sortArray[0] = fixedSort;
     ApplySort(sortArray);
 }
コード例 #11
0
        /// <summary>
        ///     Apply sorting to the collection
        /// </summary>
        /// <param name="sortCollection">The sort collection.</param>
        public void ApplySort(ListSortDescriptionCollection sortCollection)
        {
            // Stop raising of events (preserve current state)
            var oldRaise = this.RaiseListChangedEvents;

            this.RaiseListChangedEvents = false;

            try
            {
                // sort the items into a temporary list by using the new sort descriptions
                var tmp   = new PropertyComparerCollection <T>(sortCollection);
                var items = new List <T>(this);
                items.Sort(tmp);

                // apply the sorting to the actual list of items
                var index = 0;
                foreach (var item in items)
                {
                    this.SetItem(index++, item);
                }

                // and keep the sort descriptions
                this.sorts = tmp;
            }
            finally
            {
                // allow events and force the update of bindings
                this.RaiseListChangedEvents = oldRaise;
                this.ResetBindings();
            }
        }
コード例 #12
0
 public QueryParameters SetSortDescriptions(ListSortDescriptionCollection value)
 {
     return(new QueryParameters(this)
     {
         SortDescriptions = value
     });
 }
コード例 #13
0
ファイル: AdvancedList.cs プロジェクト: jfbauer1/tesvsnip
        /// <summary>
        /// The apply sort.
        /// </summary>
        /// <param name="sortCollection">
        /// The sort collection.
        /// </param>
        public void ApplySort(ListSortDescriptionCollection sortCollection)
        {
            if (this._allowSort)
            {
                bool oldRaise = RaiseListChangedEvents;
                RaiseListChangedEvents = false;
                try
                {
                    var tmp   = new PropertyComparerCollection <T>(sortCollection);
                    var items = new List <T>(this);
                    items.Sort(tmp);
                    int index = 0;
                    foreach (T item in items)
                    {
                        SetItem(index++, item);
                    }

                    this.sorts = tmp;
                }
                finally
                {
                    RaiseListChangedEvents = oldRaise;
                    ResetBindings();
                }
            }
        }
コード例 #14
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="descriptionCollection"></param>
 public void ApplySort(ListSortDescriptionCollection descriptionCollection)
 {
     _logger.Log("ApplySort - ListSortDescriptionCollection ", LogCategory.Info);
     SortDescriptions = descriptionCollection;
     ViewOfBusinessObjectCollection.Sort(new GenericComparer <T>(SortDescriptions));
     OnListChanged(new ListChangedEventArgs(ListChangedType.Reset, -1));
 }
コード例 #15
0
        public void ApplySort(System.ComponentModel.ListSortDescriptionCollection sorts)
        {
            _descrips = sorts;
            if (sorts == null || sorts.Count < 1)
            {
                if (_filter == null)
                {
                    _filterIds.Clear();
                }
                else
                {
                    _filterIds.Sort();
                }
            }
            else
            {
                if (!_filterIds.Any() && _filter == null)
                {
                    _filterIds.AddRange(Enumerable.Range(0, _list.Count));
                }
                _filterIds.Sort((x, y) => CompareProp((T)_list[x], (T)_list[y]));
            }

            ResetBindings();
        }
コード例 #16
0
        public void SortDescriptionTest()
        {
            IBindingListView view = (IBindingListView) new DataView(table);

            ListSortDescriptionCollection col = view.SortDescriptions;

            ((DataView)view).Sort = "";
            col = view.SortDescriptions;
            Assert.AreEqual(0, col.Count, "#1");

            ((DataView)view).Sort = null;
            col = view.SortDescriptions;
            Assert.AreEqual(0, col.Count, "#2");

            ((DataView)view).Sort = "col1 DESC, col2 ASC";
            col = view.SortDescriptions;
            Assert.AreEqual(2, col.Count, "#3");
            Assert.AreEqual("col1", col[0].PropertyDescriptor.Name, "#4");
            Assert.AreEqual(ListSortDirection.Descending, col[0].SortDirection, "#5");
            Assert.AreEqual("col2", col[1].PropertyDescriptor.Name, "#6");
            Assert.AreEqual(ListSortDirection.Ascending, col[1].SortDirection, "#7");

            //ApplySort Test
            IBindingListView view1 = (IBindingListView) new DataView(table);

            Assert.IsFalse(view.Equals(view1), "#8");
            view1.ApplySort(col);
            Assert.AreEqual("[col1] DESC,[col2]", ((DataView)view1).Sort, "#9");
            for (int i = 0; i < view.Count; ++i)
            {
                Assert.AreEqual(((DataView)view)[i].Row, ((DataView)view1)[i].Row, "#10" + i);
            }
        }
コード例 #17
0
 public ConfigObjectComparer(ListSortDescriptionCollection sorts)
 {
     if (sorts == null)
     {
         throw new ArgumentNullException("sorts");
     }
     this.sorts = sorts;
 }
コード例 #18
0
ファイル: ListBase!1.cs プロジェクト: riyuexing/rms
        public void ApplySort(ListSortDescriptionCollection sorts)
        {
            this._sortProperty     = null;
            this._sortDescriptions = sorts;
            SortComparer <T> comparer = new SortComparer <T>(sorts);

            this.ApplySortInternal(comparer);
        }
コード例 #19
0
 public void ApplySort(ListSortDescriptionCollection sorts)
 {
     if (!this.SupportsAdvancedSorting)
     {
         throw new NotSupportedException();
     }
     this.OnApplySort(sorts);
 }
コード例 #20
0
 /// <summary>
 /// Sorts the list based on a <see cref="T:System.ComponentModel.PropertyDescriptor"/> and a <see cref="T:System.ComponentModel.ListSortDirection"/>.
 /// </summary>
 /// <param name="property">The <see cref="T:System.ComponentModel.PropertyDescriptor"/> to sort by.
 /// </param><param name="direction">One of the <see cref="T:System.ComponentModel.ListSortDirection"/> values.
 /// </param><exception cref="T:System.NotSupportedException"><see cref="P:System.ComponentModel.IBindingList.SupportsSorting"/> is false.
 /// </exception>
 public void ApplySort(PropertyDescriptor property, ListSortDirection direction)
 {
     ListSortDescription[] descriptions = new[] { new ListSortDescription(property, direction) };
     SortDescriptions  = new ListSortDescriptionCollection(descriptions);
     PageProvider.Sort = property.Name + " " + (direction == ListSortDirection.Ascending ? "Asc" : "Desc");
     InnerCache.Reset();
     OnListChanged(new ListChangedEventArgs(ListChangedType.Reset, 0));
 }
コード例 #21
0
        public static ListObjectComparer <T> FromSort <T>(ListSortDescriptionCollection sorts)
        {
            var comparers = sorts.Cast <ListSortDescription>()
                            .Select(MakeComparer <T>)
                            .ToList();

            return(new ListObjectComparer <T>(comparers));
        }
コード例 #22
0
        void IBindingList.ApplySort(PropertyDescriptor property, ListSortDirection direction)
        {
            ListSortDescription[] sorts = new ListSortDescription[1];
            sorts[0] = new ListSortDescription(property, direction);
            ListSortDescriptionCollection lsdc = new ListSortDescriptionCollection(sorts);

            this.ApplySort(lsdc);
        }
コード例 #23
0
        protected void ApplySort(ListSortDescriptionCollection sorts)
        {
            _SortProperty     = null;
            _SortDescriptions = sorts;
            var comparer = new PropertyComparer <T>(sorts);

            ApplySortInternal(comparer);
        }
コード例 #24
0
        void IBindingListView.ApplySort(ListSortDescriptionCollection sorts)
        {
            m_SortProperty     = null;
            m_SortDescriptions = sorts;
            SortComparer <T> comparer = new SortComparer <T>(sorts);

            ApplySortInternal(comparer);
        }
コード例 #25
0
        /// <summary>
        /// Sorts the list based on a PropertyDescriptor and a ListSortDirection.
        /// </summary>
        /// <param name="property">The <see cref="PropertyDescriptor"/> to sort by.</param>
        /// <param name="direction">One of the <see cref="ListSortDirection"/> values.</param>
        public void ApplySort(PropertyDescriptor property, ListSortDirection direction)
        {
            ListSortDescription listSortDescription = new ListSortDescription(property, direction);

            ListSortDescription[]         listSortDescriptions = new ListSortDescription[] { listSortDescription };
            ListSortDescriptionCollection sorts = new ListSortDescriptionCollection(listSortDescriptions);

            ApplySort(sorts);
        }
コード例 #26
0
 public SortComparer(ListSortDescriptionCollection sortCollection)
 {
     this.m_SortCollection      = null;
     this.m_PropDesc            = null;
     this.m_Direction           = ListSortDirection.Ascending;
     this.m_PropertyDescriptors = null;
     this.Initialize();
     this.m_SortCollection = sortCollection;
 }
コード例 #27
0
 public SortComparer(string orderBy)
 {
     this.m_SortCollection      = null;
     this.m_PropDesc            = null;
     this.m_Direction           = ListSortDirection.Ascending;
     this.m_PropertyDescriptors = null;
     this.Initialize();
     this.m_SortCollection = this.ParseOrderBy(orderBy);
 }
コード例 #28
0
        public override void ApplySort(ListSortDescriptionCollection sorts)
        {
            Comparison <T> cComparison = GetComparer(sorts[0]);

            if (cComparison != null)
            {
                __cSource.Sort(cComparison);
                OnListChanged(new ListChangedEventArgs(ListChangedType.Reset, -1));
            }
        }
コード例 #29
0
ファイル: BindingListView.cs プロジェクト: laeubisoft/pwiz
 public void ApplySort(ListSortDescriptionCollection sorts)
 {
     RowFilter = RowFilter.ChangeListSortDescriptionCollection(sorts);
     if (ClusteringSpec != null && sorts.Count > 0)
     {
         ClusteringSpec = ClusteringSpec.RemoveRole(ClusterRole.ROWHEADER);
     }
     // Fire an event so that the NavBar updates to show that the DataGridView is sorting
     OnListChanged(new ListChangedEventArgs(ListChangedType.Reset, -1));
 }
コード例 #30
0
 protected virtual void OnApplySort(ListSortDescriptionCollection sorts)
 {
     this.sortOrder.Clear();
     this.sortDescriptions = sorts;
     foreach (object obj in ((IEnumerable)sorts))
     {
         ListSortDescription listSortDescription = (ListSortDescription)obj;
         this.sortOrder.Add(new QueueViewerSortOrderEntry(listSortDescription.PropertyDescriptor.Name, listSortDescription.SortDirection));
     }
     this.InternalSort();
 }