This repository has been archived by the owner on Sep 11, 2023. It is now read-only.
/
E1714.cs
77 lines (70 loc) · 3.24 KB
/
E1714.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
using DevExpress.XtraEditors.Controls;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Views.Grid;
using System;
using System.Collections;
using System.Data;
using System.Windows.Forms;
namespace WindowsApplication1
{
public class E1714
{
private static DataTable GetData()
{
DataTable dt = new DataTable();
dt.Columns.Add("Category", typeof(string));
dt.Columns.Add("Product", typeof(string));
dt.Columns.Add("Price", typeof(float));
dt.Columns.Add("Quantity", typeof(float));
dt.Rows.Add(new object[] { "Beverages", "Chai", 1.6, 319 });
dt.Rows.Add(new object[] { "Beverages", "Chai", 6295.5, 399 });
dt.Rows.Add(new object[] { "Beverages", "Ipoh Coffee", 10034.9, 228 });
dt.Rows.Add(new object[] { "Confections", "Chocolade", 1282.1, 130 });
dt.Rows.Add(new object[] { "Confections", "Chocolade", 86.7, 8 });
dt.Rows.Add(new object[] { "Confections", "Scottish Longbreads", 3909.0, 380 });
return dt;
}
public static void Init(Form form)
{
GridControl grid = new GridControl();
grid.Dock = DockStyle.Fill;
form.Controls.Add(grid);
grid.DataSource = GetData();
grid.ForceInitialize();
ColumnView columnView = ((ColumnView)grid.DefaultView);
foreach (GridColumn column in columnView.Columns)
{
column.OptionsFilter.FilterPopupMode = FilterPopupMode.CheckedList;
}
FilterPopupCheckedListBoxEventHandler handler = delegate (object sender, FilterPopupCheckedListBoxEventArgs e)
{
ArrayList list = new ArrayList(e.CheckedComboBox.Items);
list.Sort(new CheckedListBoxItemComparer(SortDirection.Descending));
e.CheckedComboBox.Items.Clear();
e.CheckedComboBox.Items.AddRange(list.ToArray());
};
columnView.ShowFilterPopupCheckedListBox += handler;
}
}
public class CheckedListBoxItemComparer : IComparer
{
private SortDirection directionCore = SortDirection.Ascending;
public CheckedListBoxItemComparer() : base() { }
public CheckedListBoxItemComparer(SortDirection direction) { this.directionCore = direction; }
int IComparer.Compare(object x, object y)
{
CheckedListBoxItem listBoxItemX = x as CheckedListBoxItem, listBoxItemY = y as CheckedListBoxItem;
FilterItem filterItemX = listBoxItemX != null ? listBoxItemX.Value as FilterItem : null, filterItemY = listBoxItemY != null ? listBoxItemY.Value as FilterItem : null;
IComparable itemValueX = filterItemX != null ? filterItemX.Value as IComparable : null, itemValueY = filterItemY != null ? filterItemY.Value as IComparable : null;
if (directionCore == SortDirection.Ascending)
return Comparer.Default.Compare(itemValueX, itemValueY);
else
{
return Comparer.Default.Compare(itemValueY, itemValueX);
}
}
}
public enum SortDirection { Ascending, Descending }
}