/
Grid.cs
87 lines (71 loc) · 2.7 KB
/
Grid.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
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Registrator;
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Columns;
using System.ComponentModel;
using DevExpress.Utils.Serializing;
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; } }
protected override GridColumnCollection CreateColumnCollection() {
return new MyGridColumnCollection(this);
}
}
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);
}
}
public class MyGridColumnCollection : GridColumnCollection {
public MyGridColumnCollection(ColumnView view) : base(view) { }
protected override GridColumn CreateColumn() {
return new MyGridColumn();
}
}
public class MyGridColumn : GridColumn {
public MyGridColumn() : base() { }
private int oldVisibleIndex = -1;
[XtraSerializableProperty, XtraSerializablePropertyId(LayoutIdLayout)]
public int OldVisibleIndex {
get { return oldVisibleIndex; }
set {
if (value == -1) return;
oldVisibleIndex = value;
}
}
protected override void Assign(GridColumn column) {
base.Assign(column);
MyGridColumn source = column as MyGridColumn;
if (source == null) return;
OldVisibleIndex = source.OldVisibleIndex;
}
public override int VisibleIndex {
get { return base.VisibleIndex; }
set {
oldVisibleIndex = value;
base.VisibleIndex = value;
}
}
public override bool Visible {
get { return base.Visible; }
set {
if (!base.Visible && value && VisibleIndex == -1)
VisibleIndex = OldVisibleIndex;
base.Visible = value;
}
}
}
}