This repository has been archived by the owner on Sep 11, 2023. It is now read-only.
/
MyGridView.cs
67 lines (56 loc) · 2.32 KB
/
MyGridView.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
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Registrator;
using DevExpress.XtraGrid.Views.Base;
using System.ComponentModel;
using DevExpress.XtraGrid.Columns;
using DevExpress.Data;
namespace DXSample {
public class MyGridControl : GridControl {
public MyGridControl() : base() { }
protected override void RegisterAvailableViewsCore(InfoCollection collection) {
base.RegisterAvailableViewsCore(collection);
collection.Add(new MyGridViewInfoRegistrator());
}
}
public class MyGridView : GridView {
public MyGridView() : base() { }
public MyGridView(GridControl grid) : base(grid) { }
internal const string MyGridViewName = "MyGridView";
protected override string ViewName { get { return MyGridViewName; } }
private string fsFieldName;
public string SortFieldName {
get { return fsFieldName; }
set { fsFieldName = value; }
}
protected override void OnColumnSortInfoCollectionChanged(CollectionChangeEventArgs e) {
base.OnColumnSortInfoCollectionChanged(e);
GridColumn col = Columns[fsFieldName];
if (col == null) return;
if (col.SortIndex != 0) {
SortInfo.BeginUpdate();
try {
if (Columns[fsFieldName].SortIndex > 0)
SortInfo.RemoveAt(Columns[fsFieldName].SortIndex);
SortInfo.Insert(0, new GridColumnSortInfo(Columns[fsFieldName], ColumnSortOrder.Ascending));
} finally { SortInfo.EndUpdate(); }
}
}
public override void Assign(BaseView v, bool copyEvents) {
BeginUpdate();
try {
base.Assign(v, copyEvents);
MyGridView source = v as MyGridView;
if (source == null) return;
SortFieldName = source.SortFieldName;
} finally { EndUpdate(); }
}
}
public class MyGridViewInfoRegistrator : GridInfoRegistrator {
public MyGridViewInfoRegistrator() : base() { }
public override string ViewName { get { return MyGridView.MyGridViewName; } }
public override BaseView CreateView(GridControl grid) {
return new MyGridView(grid);
}
}
}