This repository has been archived by the owner on Sep 11, 2023. It is now read-only.
/
SortForm.cs
104 lines (91 loc) · 3.29 KB
/
SortForm.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid;
using DevExpress.Data;
using DevExpress.XtraTreeList.Nodes;
using System.Collections;
namespace DXSample
{
public partial class SortForm : DevExpress.XtraEditors.XtraForm
{
GridView view;
public SortForm(GridView view)
{
InitializeComponent();
StartPosition = FormStartPosition.CenterParent;
this.view = view;
}
private void SortForm_Load(object sender, EventArgs e)
{
SetUpRepositories();
PopulateTree();
}
private void SetUpRepositories()
{
repositoryItemImageComboBox1.Items.AddEnum(typeof(ColumnSortOrder));
repositoryItemImageComboBox2.Items.AddEnum(typeof(ColumnSortMode));
ArrayList columns = new ArrayList();
foreach (GridColumn col in view.VisibleColumns)
if (col.SortIndex == -1)
columns.Add(col);
repositoryItemComboBox1.Items.AddRange(columns);
}
private void PopulateTree()
{
foreach (GridColumn col in view.SortedColumns)
sortTree.AppendNode(new object[] { col, col.SortMode, col.SortOrder }, null);
}
private void OnAddLevel(object sender, EventArgs e)
{
sortTree.AppendNode(new object[] {null, ColumnSortMode.Default, ColumnSortOrder.None}, null);
}
private void OnDeleteLevel(object sender, EventArgs e)
{
sortTree.DeleteNode(sortTree.FocusedNode);
}
public void SaveChanges()
{
view.BeginSort();
view.ClearSorting();
foreach (TreeListNode node in sortTree.Nodes)
{
GridColumn column = node["Column"] as GridColumn;
if (column == null) continue;
ColumnSortMode sortMode = (ColumnSortMode)node["SortOn"];
ColumnSortOrder sortOrder = (ColumnSortOrder)node["SortOrder"];
column.SortMode = sortMode;
column.SortOrder = sortOrder;
}
view.EndSort();
}
private void OnColumnChanged(object sender, EventArgs e)
{
ComboBoxEdit edit = sender as ComboBoxEdit;
object val = edit.EditValue;
if(repositoryItemComboBox1.Items.Contains(val))
repositoryItemComboBox1.Items.Remove(val);
}
private void OnMoveUp(object sender, EventArgs e)
{
int index = sortTree.GetNodeIndex(sortTree.FocusedNode);
int prevIndex = index - 1;
if (prevIndex == -1) return;
sortTree.SetNodeIndex(sortTree.FocusedNode, prevIndex);
}
private void OnMoveDown(object sender, EventArgs e)
{
int index = sortTree.GetNodeIndex(sortTree.FocusedNode);
int nextIndex = index + 1;
if (nextIndex == sortTree.Nodes.Count) return;
sortTree.SetNodeIndex(sortTree.FocusedNode, nextIndex);
}
}
}