Ejemplo n.º 1
0
        public int Compare(TreeNode x, TreeNode y, SortColumnDescription sortDescription)
        {
            int         c  = 0;
            IComparable xc = null;
            IComparable yc = null;

#if WPF
            PropertyDescriptorCollection descriptor1 = TypeDescriptor.GetProperties(x.Item.GetType());
#else
            PropertyInfoCollection descriptor1 = new PropertyInfoCollection(x.Item.GetType());
#endif
            xc = descriptor1.GetValue(x.Item, sortDescription.ColumnName) as IComparable;

#if WPF
            PropertyDescriptorCollection descriptor2 = TypeDescriptor.GetProperties(y.Item.GetType());
#else
            PropertyInfoCollection descriptor2 = new PropertyInfoCollection(y.Item.GetType());
#endif
            yc = descriptor1.GetValue(y.Item, sortDescription.ColumnName) as IComparable;

            if (xc != null)
            {
                c = xc.CompareTo(yc);
            }
            else if (yc != null)
            {
                c = -1;
            }

            if (sortDescription.SortDirection == ListSortDirection.Descending)
            {
                c = -c;
            }
            return(c);
        }
Ejemplo n.º 2
0
        private void ServerDataGrid_OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            var visualContainer = ServerDataGrid.GetVisualContainer();
            var rowColumnIndex  = visualContainer.PointToCellRowColumnIndex(e.GetPosition(visualContainer));

            if (rowColumnIndex.IsEmpty)
            {
                return;
            }

            var columnIndex = ServerDataGrid.ResolveToGridVisibleColumnIndex(rowColumnIndex.ColumnIndex);

            if (columnIndex != -1)
            {
                return;
            }

            var recordIndex = ServerDataGrid.ResolveToRecordIndex(rowColumnIndex.RowIndex);

            if (recordIndex == -1)
            {
                const string columnName            = @"Enable";
                var          sortColumnDescription = ServerDataGrid.SortColumnDescriptions.FirstOrDefault(col => col.ColumnName == columnName);
                if (sortColumnDescription != null)
                {
                    sortColumnDescription.SortDirection = sortColumnDescription.SortDirection == ListSortDirection.Ascending ? ListSortDirection.Descending : ListSortDirection.Ascending;
                    ServerDataGrid.SortColumnDescriptions.Remove(sortColumnDescription);
                }
                else
                {
                    sortColumnDescription = new SortColumnDescription
                    {
                        ColumnName    = columnName,
                        SortDirection = ListSortDirection.Ascending
                    };
                }
                if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
                {
                }
                else
                {
                    ServerDataGrid.SortColumnDescriptions.Clear();
                }
                ServerDataGrid.SortColumnDescriptions.Add(sortColumnDescription);
            }
            else
            {
                var entry = ServerDataGrid.View.GroupDescriptions.Count == 0
                        ? ServerDataGrid.View.Records[recordIndex]
                        : ServerDataGrid.View.TopLevelGroup.DisplayElements[recordIndex];
                if (entry.IsRecords && entry is RecordEntry recordEntry && recordEntry.Data is Server server)
                {
                    server.Enable = !server.Enable;
                    _controller.Save();
                }
            }
        }
Ejemplo n.º 3
0
        public static void ResetGridSorting(SfDataGrid dataGrid, string prefab, bool shouldSort)
        {
            if (!ShouldFireGridSorting)
            {
                ShouldFireGridSorting = true;
                return;
            }

            if (!shouldSort)
            {
                dataGrid.SortColumnDescriptions.Clear();

                return;
            }

            dataGrid.SortColumnDescriptions.Clear();
            if (string.IsNullOrWhiteSpace(prefab))
            {
                return;
            }
            List <int> sorts = App.GetSorts(prefab);

            //sorts.Reverse();
            using (var conn = new SqlConnection(App.ConnectionString))
            {
                conn.Open();
                DataTable prefabTable = App.GetPrefabDataTable(conn, $"{App.Settings["Schema"]}_PREFABS", prefab);

                foreach (int i in sorts)
                {
                    //Debug.WriteLine(prop[i]);
                    var sorter = new SortColumnDescription
                    {
                        ColumnName    = prefabTable.Rows[i]["COLUMNS"].ToString(),
                        SortDirection = ListSortDirection.Ascending
                    };
                    if (dataGrid.SortColumnDescriptions.Contains(sorter))
                    {
                        continue;
                    }
                    try
                    {
                        dataGrid.SortColumnDescriptions.Add(sorter);
                    }
                    catch
                    {
                        Debug.WriteLine("sorter ERROR!");
                    }
                }

                conn.Close();
            }
        }
Ejemplo n.º 4
0
        internal void MakeSort(TreeGridColumn column)
        {
            if (this.View == null)
            {
                return;
            }
            if (column.MappingName == null)
            {
                throw new InvalidOperationException("Mapping Name is necessary for Sorting");
            }
            if (!this.treeGrid.CheckColumnNameinItemProperties(column))
            {
                return;
            }
            CommitCurrentRow();
            var sortColumName  = column.MappingName;
            var cancelScroll   = false;
            var allowMultiSort = SelectionHelper.CheckControlKeyPressed();

            IsInSort = true;
            if (treeGrid.SortColumnDescriptions.Any() && allowMultiSort)
            {
                var sortedColumn = this.treeGrid.SortColumnDescriptions.FirstOrDefault(s => s.ColumnName == sortColumName);
                if (sortedColumn == default(SortColumnDescription))
                {
                    var newSortColumn = new SortColumnDescription {
                        ColumnName = sortColumName, SortDirection = ListSortDirection.Ascending
                    };
                    if (this.treeGrid.RaiseSortColumnsChanging(new List <SortColumnDescription>()
                    {
                        newSortColumn
                    }, new List <SortColumnDescription>(), NotifyCollectionChangedAction.Add, out cancelScroll))
                    {
                        this.treeGrid.SortColumnDescriptions.Add(newSortColumn);
                        this.treeGrid.RaiseSortColumnsChanged(new List <SortColumnDescription>()
                        {
                            newSortColumn
                        }, new List <SortColumnDescription>(), NotifyCollectionChangedAction.Add);
                    }
                }
                else
                {
                    if (sortedColumn.SortDirection == ListSortDirection.Descending && this.treeGrid.AllowTriStateSorting)
                    {
                        var removedSortColumn = this.treeGrid.SortColumnDescriptions.FirstOrDefault(s => s.ColumnName == sortColumName);
                        if (removedSortColumn != null)
                        {
                            if (this.treeGrid.RaiseSortColumnsChanging(new List <SortColumnDescription>(), new List <SortColumnDescription>()
                            {
                                removedSortColumn
                            }, NotifyCollectionChangedAction.Remove, out cancelScroll))
                            {
                                this.treeGrid.SortColumnDescriptions.Remove(removedSortColumn);
                                this.treeGrid.RaiseSortColumnsChanged(new List <SortColumnDescription>(), new List <SortColumnDescription>()
                                {
                                    removedSortColumn
                                }, NotifyCollectionChangedAction.Remove);
                            }
                        }
                    }
                    else
                    {
                        sortedColumn.SortDirection = sortedColumn.SortDirection == ListSortDirection.Ascending ? ListSortDirection.Descending : ListSortDirection.Ascending;
                        var removedSortColumn = this.treeGrid.SortColumnDescriptions.FirstOrDefault(s => s.ColumnName == sortedColumn.ColumnName);
                        if (this.treeGrid.RaiseSortColumnsChanging(new List <SortColumnDescription> {
                            sortedColumn
                        }, new List <SortColumnDescription>()
                        {
                            removedSortColumn
                        }, NotifyCollectionChangedAction.Replace, out cancelScroll))
                        {
                            this.treeGrid.SortColumnDescriptions.Remove(removedSortColumn);
                            this.treeGrid.SortColumnDescriptions.Add(sortedColumn);
                            this.treeGrid.RaiseSortColumnsChanged(new List <SortColumnDescription> {
                                sortedColumn
                            }, new List <SortColumnDescription>()
                            {
                                removedSortColumn
                            }, NotifyCollectionChangedAction.Replace);
                        }
                    }
                }
            }
            else
            {
                var currentSortColumn = this.treeGrid.SortColumnDescriptions.FirstOrDefault(s => s.ColumnName == sortColumName);
                if (currentSortColumn != default(SortColumnDescription))
                {
                    if (currentSortColumn.SortDirection == ListSortDirection.Descending && this.treeGrid.AllowTriStateSorting)
                    {
                        var sortColumnsClone = this.treeGrid.SortColumnDescriptions.ToList();
                        if (this.treeGrid.RaiseSortColumnsChanging(new List <SortColumnDescription>(), sortColumnsClone, NotifyCollectionChangedAction.Remove, out cancelScroll))
                        {
                            this.treeGrid.SortColumnDescriptions.Clear();
                            this.treeGrid.RaiseSortColumnsChanged(new List <SortColumnDescription>(), sortColumnsClone, NotifyCollectionChangedAction.Remove);
                        }
                    }
                    else
                    {
                        currentSortColumn.SortDirection = currentSortColumn.SortDirection == ListSortDirection.Ascending ? ListSortDirection.Descending : ListSortDirection.Ascending;
                        if (this.treeGrid.RaiseSortColumnsChanging(new List <SortColumnDescription>()
                        {
                            currentSortColumn
                        }, new List <SortColumnDescription>(), NotifyCollectionChangedAction.Replace, out cancelScroll))
                        {
                            this.treeGrid.SortColumnDescriptions.Clear();
                            this.treeGrid.SortColumnDescriptions.Add(currentSortColumn);
                            this.treeGrid.RaiseSortColumnsChanged(new List <SortColumnDescription>()
                            {
                                currentSortColumn
                            }, new List <SortColumnDescription>(), NotifyCollectionChangedAction.Replace);
                        }
                    }
                }
                else
                {
                    var sortColumn = new SortColumnDescription()
                    {
                        ColumnName    = sortColumName,
                        SortDirection = ListSortDirection.Ascending
                    };

                    if (this.treeGrid.SortColumnDescriptions.Any())
                    {
                        var sortColumnsClone = this.treeGrid.SortColumnDescriptions.ToList();
                        if (this.treeGrid.RaiseSortColumnsChanging(new List <SortColumnDescription>()
                        {
                            sortColumn
                        }, sortColumnsClone, NotifyCollectionChangedAction.Add, out cancelScroll))
                        {
                            this.treeGrid.SortColumnDescriptions.Clear();
                            this.treeGrid.SortColumnDescriptions.Add(sortColumn);
                            this.treeGrid.RaiseSortColumnsChanged(new List <SortColumnDescription>()
                            {
                                sortColumn
                            }, sortColumnsClone, NotifyCollectionChangedAction.Add);
                        }
                    }
                    else
                    {
                        if (this.treeGrid.RaiseSortColumnsChanging(new List <SortColumnDescription>()
                        {
                            sortColumn
                        }, new List <SortColumnDescription>(), NotifyCollectionChangedAction.Add, out cancelScroll))
                        {
                            this.treeGrid.SortColumnDescriptions.Add(sortColumn);
                            this.treeGrid.RaiseSortColumnsChanged(new List <SortColumnDescription>()
                            {
                                sortColumn
                            }, new List <SortColumnDescription>(), NotifyCollectionChangedAction.Add);
                        }
                    }
                }
            }
            RefreshAfterSorting(cancelScroll);
            IsInSort = false;
        }
Ejemplo n.º 5
0
 public SortedColumnState(SortColumnDescription desc, SortDirection dir)
 {
     columnDesc = desc;
     direction  = dir;
 }