Esempio n. 1
0
            private void SortRows(MultiColumnHeader header)
            {
                IList <TreeViewItem> rows = GetRows();

                int[] sortedColumns = header.state.sortedColumns;

                if (sortedColumns.Length > 0 && rows.Count > 1)
                {
                    int firstColumn = sortedColumns[0];

                    IOrderedEnumerable <TreeViewItem> query =
                        InitialQuery(rows, (Column)firstColumn, header.IsSortedAscending(firstColumn));

                    for (int i = 1; i < sortedColumns.Length; ++i)
                    {
                        query = SubQuery(query, sortedColumns[i], header.IsSortedAscending(sortedColumns[i]));
                    }

                    // We need to execute the query before clearing rows, otherwise it returns nothing
                    List <TreeViewItem> newRows = query.ToList();

                    rows.Clear();

                    foreach (TreeViewItem item in newRows)
                    {
                        rows.Add(item);
                    }
                }

                RefreshCustomRowHeights();
            }
Esempio n. 2
0
        public void Sort(MultiColumnHeader header, TreeViewItem root, IList <TreeViewItem> items)
        {
            int  sortIndex   = header.sortedColumnIndex;
            bool ascending   = header.IsSortedAscending(sortIndex);
            var  topmenutype = (TopMenu)sortIndex;

            if (topmenutype == TopMenu.Name)//name
            {
                SortDefault(root, ascending);
            }
            else if (topmenutype == TopMenu.ResType)//restype
            {
                SortResType(root, ascending);
            }
            else if (topmenutype == TopMenu.Size)
            {
                SortSize(root, ascending);
            }
            else if (topmenutype == TopMenu.FileSize)
            {
                SortFileSize(root, ascending);
            }
            else if (topmenutype == TopMenu.SelfSize)
            {
                SortSelfSize(root, ascending);
            }
            else if (topmenutype == TopMenu.SelfFileSize)
            {
                SortSelfFileSize(root, ascending);
            }
            else if (topmenutype == TopMenu.BeDependOn)
            {
                SortDependency(root, ascending);
            }
        }
Esempio n. 3
0
        private void Header_sortingChanged(MultiColumnHeader multiColumnHeader)
        {
            SessionState.SetInt(SortedColumnIndexStateKey, multiColumnHeader.sortedColumnIndex);
            var index     = multiColumnHeader.sortedColumnIndex;
            var ascending = multiColumnHeader.IsSortedAscending(multiColumnHeader.sortedColumnIndex);
            var items     = rootItem.children.Cast <UrlTreeViewItem>();

            // sorting
            IOrderedEnumerable <UrlTreeViewItem> orderedEnumerable;

            switch (index)
            {
            case 0:
                orderedEnumerable = ascending ? items.OrderBy(item => item.Data.Title) : items.OrderByDescending(item => item.Data.Title);
                break;

            case 1:
                orderedEnumerable = ascending ? items.OrderBy(item => item.Data.URL) : items.OrderByDescending(item => item.Data.URL);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(index), index, null);
            }

            CurrentBindingItems = rootItem.children = orderedEnumerable.Cast <TreeViewItem>().ToList();
            for (int i = 0; i < CurrentBindingItems.Count; i++)
            {
                var item = CurrentBindingItems[i];
                item.id = i;
            }
            BuildRows(rootItem);
        }
		private void Header_sortingChanged(MultiColumnHeader multiColumnHeader) {
			SessionState.SetInt(sortedColumnIndexStateKey, multiColumnHeader.sortedColumnIndex);
			var index = multiColumnHeader.sortedColumnIndex;
			var ascending = multiColumnHeader.IsSortedAscending(multiColumnHeader.sortedColumnIndex);

			var items = rootItem.children.Cast<UniTaskTrackerViewItem>();

			IOrderedEnumerable<UniTaskTrackerViewItem> orderedEnumerable;

			switch (index) {
				case 0:
					orderedEnumerable = ascending ? items.OrderBy(item => item.TaskType) : items.OrderByDescending(item => item.TaskType);
					break;

				case 1:
					orderedEnumerable = ascending ? items.OrderBy(item => double.Parse(item.Elapsed)) : items.OrderByDescending(item => double.Parse(item.Elapsed));
					break;

				case 2:
					orderedEnumerable = ascending ? items.OrderBy(item => item.Status) : items.OrderByDescending(item => item.Elapsed);
					break;

				case 3:
					orderedEnumerable = ascending ? items.OrderBy(item => item.Position) : items.OrderByDescending(item => item.PositionFirstLine);
					break;

				default:
					throw new ArgumentOutOfRangeException(nameof(index), index, null);
			}

			CurrentBindingItems = rootItem.children = orderedEnumerable.Cast<TreeViewItem>().ToList();
			BuildRows(rootItem);
		}
Esempio n. 5
0
        private void Header_sortingChanged(MultiColumnHeader multiColumnHeader)
        {
            SessionState.SetInt(SortedColumnIndexStateKey, multiColumnHeader.sortedColumnIndex);
            var index     = multiColumnHeader.sortedColumnIndex;
            var ascending = multiColumnHeader.IsSortedAscending(multiColumnHeader.sortedColumnIndex);
            var items     = rootItem.children.Cast <FileTreeViewItem>();

            // sorting
            IOrderedEnumerable <FileTreeViewItem> orderedEnumerable;

            switch (index)
            {
            case 1:
                orderedEnumerable = ascending ? items.OrderBy(item => item.FileName) : items.OrderByDescending(item => item.FileName);
                break;

            case 2:
                orderedEnumerable = ascending ? items.OrderBy(item => item.FilePath) : items.OrderByDescending(item => item.FilePath);
                break;

            case 3:
                orderedEnumerable = ascending ? items.OrderBy(item => item.FileSize) : items.OrderByDescending(item => item.FileSize);
                break;

            case 4:     // empty header
                orderedEnumerable = null;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(index), index, null);
            }

            CurrentBindingItems = rootItem.children = orderedEnumerable.Cast <TreeViewItem>().ToList();
            BuildRows(rootItem);
        }
        private void Header_sortingChanged(MultiColumnHeader multiColumnHeader)
        {
            SessionState.SetInt(sortedColumnIndexStateKey, multiColumnHeader.sortedColumnIndex);
            var index     = multiColumnHeader.sortedColumnIndex;
            var ascending = multiColumnHeader.IsSortedAscending(multiColumnHeader.sortedColumnIndex);

            var items = rootItem.children.Cast <MessagePipeDiagnosticsInfoTreeViewItem>();

            IOrderedEnumerable <MessagePipeDiagnosticsInfoTreeViewItem> orderedEnumerable;

            switch (index)
            {
            case 0:
                orderedEnumerable = ascending ? items.OrderBy(item => item.Head) : items.OrderByDescending(item => item.Head);
                break;

            case 1:
                orderedEnumerable = ascending ? items.OrderBy(item => item.Elapsed) : items.OrderByDescending(item => item.Elapsed);
                break;

            case 2:
                orderedEnumerable = ascending ? items.OrderBy(item => item.Count) : items.OrderByDescending(item => item.Count);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(index), index, null);
            }

            CurrentBindingItems = rootItem.children = orderedEnumerable.Cast <TreeViewItem>().ToList();
            BuildRows(rootItem);
        }
 void SortingChanged(MultiColumnHeader header)
 {
     if (header.sortedColumnIndex < 0 || header.sortedColumnIndex > mColumns.Length)
     {
         return;
     }
     SetSorting(header.sortedColumnIndex, header.IsSortedAscending(header.sortedColumnIndex));
 }
Esempio n. 8
0
        private void SortItems(MultiColumnHeader multiColumnHeader)
        {
            SessionState.SetInt(SortedColumnIndexStateKey, multiColumnHeader.sortedColumnIndex);
            var index     = (ColumnIndex)multiColumnHeader.sortedColumnIndex;
            var ascending = multiColumnHeader.IsSortedAscending(multiColumnHeader.sortedColumnIndex);

            if (rootItem != null)
            {
                rootItem.children = SortItems(rootItem.children, index, ascending);
                BuildRows(rootItem);
            }
        }
 private void OnSortingChanged(MultiColumnHeader header)
 {
     if (header.sortedColumnIndex != -1)
     {
         if (this.m_ObjectsData != null)
         {
             int orderMultiplier = (!header.IsSortedAscending(header.sortedColumnIndex)) ? -1 : 1;
             Comparison <ProfilerDetailedObjectsView.ObjectInformation> comparison = (ProfilerDetailedObjectsView.ObjectInformation objData1, ProfilerDetailedObjectsView.ObjectInformation objData2) => objData1.columnStrings[header.sortedColumnIndex].CompareTo(objData2.columnStrings[header.sortedColumnIndex]) * orderMultiplier;
             this.m_ObjectsData.Sort(comparison);
         }
         base.Reload();
     }
 }
Esempio n. 10
0
        /// <summary>
        /// ソート
        /// </summary>
        private void SortItem(MultiColumnHeader multiColumnHeader)
        {
            var type      = (ColumnType)multiColumnHeader.sortedColumnIndex;
            var isReverce = multiColumnHeader.IsSortedAscending(multiColumnHeader.sortedColumnIndex);

            m_isReverce  = isReverce;
            m_columnType = type;


            var items = rootItem.children.Cast <JobTreeItem>();

            rootItem.children = ToSort(items, type, isReverce);
            BuildRows(rootItem);
        }
Esempio n. 11
0
            void OnSortingChanged(MultiColumnHeader header)
            {
                if (header.sortedColumnIndex == -1)
                {
                    return; // No column to sort for (just use the order the data are in)
                }
                if (m_ObjectsData != null)
                {
                    var orderMultiplier = header.IsSortedAscending(header.sortedColumnIndex) ? 1 : -1;
                    Comparison <ObjectInformation> comparison = (objData1, objData2) =>
                                                                objData1.columnStrings[header.sortedColumnIndex].CompareTo(objData2.columnStrings[header.sortedColumnIndex]) * orderMultiplier;
                    m_ObjectsData.Sort(comparison);
                }

                Reload();
            }
Esempio n. 12
0
        private void SortItems(MultiColumnHeader header)
        {
            var index     = ( ColumnType )header.sortedColumnIndex;
            var ascending = header.IsSortedAscending(header.sortedColumnIndex);

            IOrderedEnumerable <UniSymbolItem> ordered = null;

            switch (index)
            {
            case ColumnType.NUMBER:
            case ColumnType.COPY:
                ordered = m_list.OrderBy(c => c.id);
                break;

            case ColumnType.IS_ENABLE:
                ordered = m_list
                          .OrderBy(c => !c.IsEnable)
                          .ThenBy(c => c.id)
                ;
                break;

            case ColumnType.NAME:
                ordered = m_list
                          .OrderBy(c => c.Name)
                          .ThenBy(c => c.id)
                ;
                break;

            case ColumnType.COMMENT:
                ordered = m_list
                          .OrderBy(c => c.Comment)
                          .ThenBy(c => c.id)
                ;
                break;
            }

            var items = ordered.AsEnumerable();

            if (!ascending)
            {
                items = items.Reverse();
            }

            rootItem.children = items.Cast <TreeViewItem>().ToList();
            BuildRows(rootItem);
        }
            void OnSortingChanged(MultiColumnHeader header)
            {
                if (header.sortedColumnIndex == -1)
                {
                    return; // No column to sort for (just use the order the data are in)
                }
                if (m_CallsData.calls != null)
                {
                    var orderMultiplier = header.IsSortedAscending(header.sortedColumnIndex) ? 1 : -1;
                    Comparison <CallInformation> comparison;
                    switch ((Column)header.sortedColumnIndex)
                    {
                    case Column.Name:
                        comparison = (callInfo1, callInfo2) => callInfo1.name.CompareTo(callInfo2.name) * orderMultiplier;
                        break;

                    case Column.Calls:
                        comparison = (callInfo1, callInfo2) => callInfo1.callsCount.CompareTo(callInfo2.callsCount) * orderMultiplier;
                        break;

                    case Column.GcAlloc:
                        comparison = (callInfo1, callInfo2) => callInfo1.gcAllocBytes.CompareTo(callInfo2.gcAllocBytes) * orderMultiplier;
                        break;

                    case Column.TimeMs:
                        comparison = (callInfo1, callInfo2) => callInfo1.totalCallTimeMs.CompareTo(callInfo2.totalCallTimeMs) * orderMultiplier;
                        break;

                    case Column.TimePercent:
                        comparison = (callInfo1, callInfo2) => callInfo1.timePercent.CompareTo(callInfo2.timePercent) * orderMultiplier;
                        break;

                    case Column.Count:
                        comparison = (callInfo1, callInfo2) => callInfo1.callsCount.CompareTo(callInfo2.callsCount) * orderMultiplier;
                        break;

                    default:
                        return;
                    }

                    m_CallsData.calls.Sort(comparison);
                }

                Reload();
            }
Esempio n. 14
0
            private void OnSortingChanged(MultiColumnHeader header)
            {
                if (header.sortedColumnIndex != -1)
                {
                    if (this.m_CallsData.calls != null)
                    {
                        int orderMultiplier = (!header.IsSortedAscending(header.sortedColumnIndex)) ? -1 : 1;
                        Comparison <ProfilerDetailedCallsView.CallInformation> comparison;
                        switch (header.sortedColumnIndex)
                        {
                        case 0:
                            comparison = ((ProfilerDetailedCallsView.CallInformation callInfo1, ProfilerDetailedCallsView.CallInformation callInfo2) => callInfo1.name.CompareTo(callInfo2.name) * orderMultiplier);
                            break;

                        case 1:
                            comparison = ((ProfilerDetailedCallsView.CallInformation callInfo1, ProfilerDetailedCallsView.CallInformation callInfo2) => callInfo1.callsCount.CompareTo(callInfo2.callsCount) * orderMultiplier);
                            break;

                        case 2:
                            comparison = ((ProfilerDetailedCallsView.CallInformation callInfo1, ProfilerDetailedCallsView.CallInformation callInfo2) => callInfo1.gcAllocBytes.CompareTo(callInfo2.gcAllocBytes) * orderMultiplier);
                            break;

                        case 3:
                            comparison = ((ProfilerDetailedCallsView.CallInformation callInfo1, ProfilerDetailedCallsView.CallInformation callInfo2) => callInfo1.totalCallTimeMs.CompareTo(callInfo2.totalCallTimeMs) * orderMultiplier);
                            break;

                        case 4:
                            comparison = ((ProfilerDetailedCallsView.CallInformation callInfo1, ProfilerDetailedCallsView.CallInformation callInfo2) => callInfo1.timePercent.CompareTo(callInfo2.timePercent) * orderMultiplier);
                            break;

                        case 5:
                            comparison = ((ProfilerDetailedCallsView.CallInformation callInfo1, ProfilerDetailedCallsView.CallInformation callInfo2) => callInfo1.callsCount.CompareTo(callInfo2.callsCount) * orderMultiplier);
                            break;

                        default:
                            return;
                        }
                        this.m_CallsData.calls.Sort(comparison);
                    }
                    base.Reload();
                }
            }
Esempio n. 15
0
    public void SortItems(MultiColumnHeader multiColumnHeader)
    {
        SessionState.SetInt(sortedColumnIndexStateKey, multiColumnHeader.sortedColumnIndex);
        var index     = (ColumnIndex)multiColumnHeader.sortedColumnIndex;
        var ascending = multiColumnHeader.IsSortedAscending(multiColumnHeader.sortedColumnIndex);

        var items = rootItem.children.Cast <TextureTableItem>();

        IOrderedEnumerable <TextureTableItem> orderedEnumerable;

        switch (index)
        {
        case ColumnIndex.Id:
            orderedEnumerable = items.OrderBy(item => item.id);
            break;

        case ColumnIndex.Name:
            orderedEnumerable = items.OrderBy(item => item.element.name);
            break;

        case ColumnIndex.Extension:
            orderedEnumerable = items.OrderBy(item => item.element.extension);
            break;

        case ColumnIndex.Bytes:
            orderedEnumerable = items.OrderBy(item => item.element.bytes);
            break;

        default:
            throw new ArgumentOutOfRangeException(nameof(index), index, null);
        }

        items = orderedEnumerable.AsEnumerable();

        if (!ascending)
        {
            items = items.Reverse();
        }

        rootItem.children = items.Cast <TreeViewItem>().ToList();
        BuildRows(rootItem);
    }
Esempio n. 16
0
        private void Header_sortingChanged(MultiColumnHeader multiColumnHeader)
        {
            SessionState.SetInt(SortedColumnIndexStateKey, multiColumnHeader.sortedColumnIndex);
            var index     = multiColumnHeader.sortedColumnIndex;
            var ascending = multiColumnHeader.IsSortedAscending(multiColumnHeader.sortedColumnIndex);
            var items     = rootItem.children.Cast <FileTreeViewItem>();

            // sorting
            IOrderedEnumerable <FileTreeViewItem> orderedEnumerable;

            switch (index)
            {
            case 0:
                orderedEnumerable = ascending ? items.OrderBy(item => item.FileName) : items.OrderByDescending(item => item.FileName);
                break;

            case 1:
                orderedEnumerable = ascending ? items.OrderBy(item => item.FileId) : items.OrderByDescending(item => item.FileId);
                break;

            case 2:
                orderedEnumerable = ascending ? items.OrderBy(item => item.MimeType) : items.OrderByDescending(item => item.MimeType);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(index), index, null);
            }

            CurrentBindingItems = rootItem.children = orderedEnumerable.Cast <TreeViewItem>().ToList();

            int id = 0;

            foreach (var child in CurrentBindingItems)
            {
                child.id = id;
                id++;
            }

            BuildRows(rootItem);
        }
Esempio n. 17
0
        /// <summary>
        /// Handle TreeView columns sorting changes
        /// </summary>
        private void OnSortingChanged(MultiColumnHeader multiColumnHeader)
        {
            if (!(multiColumnHeader.sortedColumnIndex > -1))
            {
                return;
            }

            // Get TreeView items
            var items = rootItem.children.Cast <BuildReportItem>();

            // Sort items by sorted column
            switch (multiColumnHeader.sortedColumnIndex)
            {
            case 1:
            case 2:
                items = items.OrderBy(x => x.size);
                break;

            case 3:
                items = items.OrderBy(x => x.displayName);
                break;

            case 4:
                items = items.OrderBy(x => x.extension);
                break;
            }

            // Reverse list if not sorted ascending
            if (!multiColumnHeader.IsSortedAscending(multiColumnHeader.sortedColumnIndex))
            {
                items = items.Reverse();
            }

            // Cast collection back to a list
            rootItem.children = items.Cast <TreeViewItem>().ToList();

            // Build rows again with the new sorting
            BuildRows(rootItem);
        }
Esempio n. 18
0
        public void SortItems(MultiColumnHeader multiColumnHeader)
        {
            SessionState.SetInt(sortedColumnIndexStateKey, multiColumnHeader.sortedColumnIndex);
            var index     = (DebuggerColumnIndex)multiColumnHeader.sortedColumnIndex;
            var ascending = multiColumnHeader.IsSortedAscending(multiColumnHeader.sortedColumnIndex);

            var items = rootItem.children.Cast <DebuggerItem>();

            IOrderedEnumerable <DebuggerItem> orderedEnumerable;

            switch (index)
            {
            case DebuggerColumnIndex.SortId:
                orderedEnumerable = items.OrderBy(item => item.id);
                break;

            case DebuggerColumnIndex.Message:
                orderedEnumerable = items.OrderBy(item => item.element.Message);
                break;

            case DebuggerColumnIndex.Type:
                orderedEnumerable = items.OrderBy(item => item.element.Type.ToString());
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(index), index, null);
            }

            items = orderedEnumerable.AsEnumerable();

            if (!ascending)
            {
                items = items.Reverse();
            }

            rootItem.children = items.Cast <TreeViewItem>().ToList();
            BuildRows(rootItem);
        }
Esempio n. 19
0
        /// <summary>
        /// ソートされる時に呼び出されます
        /// </summary>
        private void SortItems(MultiColumnHeader header)
        {
            var ascending = header.IsSortedAscending(header.sortedColumnIndex);

            var ordered = List
                          .OrderBy(c => c.Name)
                          .ThenBy(c => c.id)
            ;

            var items = ordered.AsEnumerable();

            if (!ascending)
            {
                items = items.Reverse();
            }

            rootItem.children = items
                                .Cast <TreeViewItem>()
                                .ToList()
            ;

            BuildRows(rootItem);
        }
Esempio n. 20
0
            void OnSortingChanged(MultiColumnHeader header)
            {
                if (header.sortedColumnIndex == -1)
                {
                    return; // No column to sort for (just use the order the data are in)
                }
                if (m_ObjectsData != null)
                {
                    var columns = m_MultiColumnHeader.columns;
                    if (header.sortedColumnIndex >= columns.Length)
                    {
                        return;
                    }

                    var orderMultiplier = header.IsSortedAscending(header.sortedColumnIndex) ? 1 : -1;
                    Comparison <ObjectInformation> comparison;
                    switch (columns[header.sortedColumnIndex].profilerColumn)
                    {
                    case HierarchyFrameDataView.columnTotalTime:
                    case HierarchyFrameDataView.columnTotalPercent:
                    case HierarchyFrameDataView.columnTotalGpuTime:
                    case HierarchyFrameDataView.columnTotalGpuPercent:
                    case HierarchyFrameDataView.columnGcMemory:
                    case HierarchyFrameDataView.columnDrawCalls:
                        comparison = (objData1, objData2) => objData1.columnValues[header.sortedColumnIndex].CompareTo(objData2.columnValues[header.sortedColumnIndex]) * orderMultiplier;
                        break;

                    default:
                        comparison = (objData1, objData2) => objData1.columnStrings[header.sortedColumnIndex].CompareTo(objData2.columnStrings[header.sortedColumnIndex]) * orderMultiplier;
                        break;
                    }
                    m_ObjectsData.Sort(comparison);
                }

                Reload();
            }
Esempio n. 21
0
        void OnSortingChanged(MultiColumnHeader multiColumnHeader)
        {
            int index = multiColumnHeader.sortedColumnIndex;

            if (index == -1)
            {
                return;
            }
            bool isAsc = multiColumnHeader.IsSortedAscending(index);

            var items = rootItem.children.Cast <AltoResourceTreeViewItem>();
            IOrderedEnumerable <AltoResourceTreeViewItem> orderedItems = null;

            switch (index)
            {
            case 0:
                orderedItems = isAsc
                        ? items.OrderBy(item => item.category)
                        : items.OrderByDescending(item => item.category);
                break;

            case 1:
                orderedItems = isAsc
                        ? items.OrderBy(item => item.id)
                        : items.OrderByDescending(item => item.id);
                break;

            case 2:
                orderedItems = isAsc
                        ? items.OrderBy(item => item.assetName)
                        : items.OrderByDescending(item => item.assetName);
                break;

            case 3:
                orderedItems = isAsc
                        ? items.OrderBy(item => item.refCount)
                        : items.OrderByDescending(item => item.refCount);
                break;

            case 4:
                orderedItems = isAsc
                        ? items.OrderBy(item => item.globalRefCount)
                        : items.OrderByDescending(item => item.globalRefCount);
                break;

            case 5:
                orderedItems = isAsc
                        ? items.OrderBy(item => item.loaded)
                        : items.OrderByDescending(item => item.loaded);
                break;

            case 6:
                orderedItems = isAsc
                        ? items.OrderBy(item => item.memorySize)
                        : items.OrderByDescending(item => item.memorySize);
                break;

            case 7:
                orderedItems = isAsc
                        ? items.OrderBy(item => item.info)
                        : items.OrderByDescending(item => item.info);
                break;
            }

            _items            = orderedItems.ToList();
            rootItem.children = _items.Cast <TreeViewItem>().ToList();
            BuildRows(rootItem);
        }
Esempio n. 22
0
 void OnSortingChanged(MultiColumnHeader multiColumnHeader)
 {
     SortChildren(rootItem, multiColumnHeader.IsSortedAscending(0));
     BuildRows(rootItem);
 }
 public void RefreshSorting()
 {
     if (mHeader.sortedColumnIndex != CTL_Settings.ColumnSortIndex ||
         (CTL_Settings.ColumnSortIndex >= 0 && CTL_Settings.ColumnSortIndex < mColumns.Length && mHeader.IsSortedAscending(CTL_Settings.ColumnSortIndex) != CTL_Settings.ColumnSortAscending))
     {
         mHeader.SetSorting(CTL_Settings.ColumnSortIndex, CTL_Settings.ColumnSortAscending);
     }
     else
     {
         SetSorting(CTL_Settings.ColumnSortIndex, CTL_Settings.ColumnSortAscending);                 //CTL...force refresh
     }
 }