实体和实体的集合
这几天在研究实体和实体的集合的写法,基本上完成了数据绑定,但是还是没有完全完成
上面是实体的集合,下面是实体的写法
1
using System;
2
using System.Collections;
3
using System.ComponentModel;
4
5
namespace Entity
6
{
7
/// <summary>
8
/// 类OrderInfo的集合
9
/// </summary>
10
public class OrderInfoCollection : CollectionBase,IBindingList
11
{
12
#region CollectionBase实现
13
14
public OrderInfoCollection()
15
{
16
}
17
18
public OrderInfoCollection(OrderInfo[] value)
19
{
20
this.AddRange(value);
21
}
22
23
public OrderInfo this[int index]
24
{
25
get{return ((OrderInfo)(this.List[index]));}
26
set{List[index] = value;}
27
}
28
29
public int Add(OrderInfo value)
30
{
31
return this.List.Add(value);
32
}
33
34
public OrderInfo AddNew()
35
{
36
return (OrderInfo)((IBindingList)this).AddNew();
37
}
38
39
object IBindingList.AddNew()
40
{
41
OrderInfo c = new OrderInfo();
42
List.Add(c);
43
return c;
44
}
45
46
public void AddRange(OrderInfo[] value)
47
{
48
for (int i = 0; (i < value.Length); i = (i + 1))
49
{
50
this.Add(value[i]);
51
}
52
}
53
54
public void AddRange(OrderInfoCollection value)
55
{
56
for (int i = 0; (i < value.Count); i = (i + 1))
57
{
58
this.Add((OrderInfo)value.List[i]);
59
}
60
}
61
62
public bool Contains(OrderInfo value)
63
{
64
return this.List.Contains(value);
65
}
66
67
public void CopyTo(OrderInfo[] array, int index)
68
{
69
this.List.CopyTo(array, index);
70
}
71
72
public int IndexOf(OrderInfo value)
73
{
74
return this.List.IndexOf(value);
75
}
76
77
public void Insert(int index, OrderInfo value)
78
{
79
List.Insert(index, value);
80
}
81
82
public void Remove(OrderInfo value)
83
{
84
List.Remove(value);
85
}
86
87
public new OrderInfoCollectionEnumerator GetEnumerator()
88
{
89
return new OrderInfoCollectionEnumerator(this);
90
}
91
92
#endregion
93
94
95
#region OrderInfoCollectionEnumerator 实现
96
97
public class OrderInfoCollectionEnumerator : IEnumerator
98
{
99
private IEnumerator _enumerator;
100
private IEnumerable _temp;
101
102
public OrderInfoCollectionEnumerator(OrderInfoCollection mappings)
103
{
104
_temp = ((IEnumerable)(mappings));
105
_enumerator = _temp.GetEnumerator();
106
}
107
108
public OrderInfo Current
109
{
110
get {return ((OrderInfo)(_enumerator.Current));}
111
}
112
113
object IEnumerator.Current
114
{
115
get {return _enumerator.Current;}
116
}
117
118
public bool MoveNext()
119
{
120
return _enumerator.MoveNext();
121
}
122
123
bool IEnumerator.MoveNext()
124
{
125
return _enumerator.MoveNext();
126
}
127
128
public void Reset()
129
{
130
_enumerator.Reset();
131
}
132
133
void IEnumerator.Reset()
134
{
135
_enumerator.Reset();
136
}
137
}
138
#endregion
139
140
141
#region IBindingList 成员
142
143
private ListChangedEventArgs resetEvent = new ListChangedEventArgs(ListChangedType.Reset, -1);
144
private ListChangedEventHandler onListChanged;
145
146
public bool AllowEdit
147
{
148
get {return true;}
149
}
150
151
public bool AllowNew
152
{
153
get {return true;}
154
}
155
156
public bool AllowRemove
157
{
158
get {return true;}
159
}
160
161
public bool SupportsChangeNotification
162
{
163
get {return true;}
164
}
165
166
public bool SupportsSearching
167
{
168
get {return false;}
169
}
170
171
public bool SupportsSorting
172
{
173
get {return false;}
174
}
175
176
public void AddIndex(PropertyDescriptor property)
177
{
178
throw new NotSupportedException();
179
}
180
public void ApplySort(PropertyDescriptor property, System.ComponentModel.ListSortDirection direction)
181
{
182
throw new NotSupportedException();
183
}
184
public PropertyDescriptor SortProperty
185
{
186
get{throw new NotSupportedException();
187
//return null;
188
}
189
}
190
public int Find(PropertyDescriptor property, object key)
191
{
192
throw new NotSupportedException();
193
//return 0;
194
}
195
public void RemoveSort()
196
{
197
throw new NotSupportedException();
198
}
199
public void RemoveIndex(PropertyDescriptor property)
200
{
201
throw new NotSupportedException();
202
}
203
public bool IsSorted
204
{
205
get { throw new NotSupportedException();
206
//return false;
207
}
208
}
209
public System.ComponentModel.ListSortDirection SortDirection
210
{
211
get{throw new NotSupportedException();
212
//return new System.ComponentModel.ListSortDirection ();
213
}
214
}
215
public event ListChangedEventHandler ListChanged
216
{
217
add{onListChanged += value;}
218
remove{onListChanged -= value;}
219
}
220
221
protected virtual void OnListChanged(ListChangedEventArgs ev)
222
{
223
if (onListChanged != null)
224
{
225
onListChanged(this, ev);
226
}
227
}
228
protected override void OnClearComplete()
229
{
230
OnListChanged(resetEvent);
231
}
232
private void RemoveChild(Object source, OrderInfo.OrderInfoEventArgs e)
233
{
234
List.Remove(source);
235
}
236
protected override void OnInsertComplete(int index, object value)
237
{
238
((OrderInfo)(value)).RemoveMe += new OrderInfo.OrderInfoEventHandler(RemoveChild);
239
OnListChanged(new ListChangedEventArgs(ListChangedType.ItemAdded, index));
240
}
241
protected override void OnRemoveComplete(int index, object value)
242
{
243
OnListChanged(new ListChangedEventArgs(ListChangedType.ItemDeleted, index));
244
}
245
protected override void OnSetComplete(int index, object oldValue, object newValue)
246
{
247
if (oldValue != newValue)
248
{
249
OnListChanged(new ListChangedEventArgs(ListChangedType.ItemAdded, index));
250
}
251
}
252
253
#endregion
254
}
255
}
using System;2
using System.Collections;3
using System.ComponentModel;4

5
namespace Entity6
{7
/// <summary>8
/// 类OrderInfo的集合9
/// </summary>10
public class OrderInfoCollection : CollectionBase,IBindingList11
{12
#region CollectionBase实现13

14
public OrderInfoCollection() 15
{16
}17

18
public OrderInfoCollection(OrderInfo[] value)19
{20
this.AddRange(value);21
}22
23
public OrderInfo this[int index] 24
{25
get{return ((OrderInfo)(this.List[index]));}26
set{List[index] = value;}27
}28

29
public int Add(OrderInfo value) 30
{31
return this.List.Add(value);32
}33

34
public OrderInfo AddNew() 35
{36
return (OrderInfo)((IBindingList)this).AddNew();37
}38

39
object IBindingList.AddNew()40
{41
OrderInfo c = new OrderInfo();42
List.Add(c);43
return c;44
}45

46
public void AddRange(OrderInfo[] value) 47
{48
for (int i = 0; (i < value.Length); i = (i + 1)) 49
{50
this.Add(value[i]);51
}52
}53

54
public void AddRange(OrderInfoCollection value) 55
{56
for (int i = 0; (i < value.Count); i = (i + 1)) 57
{58
this.Add((OrderInfo)value.List[i]);59
}60
}61

62
public bool Contains(OrderInfo value) 63
{64
return this.List.Contains(value);65
}66

67
public void CopyTo(OrderInfo[] array, int index) 68
{69
this.List.CopyTo(array, index);70
}71

72
public int IndexOf(OrderInfo value) 73
{74
return this.List.IndexOf(value);75
}76

77
public void Insert(int index, OrderInfo value) 78
{79
List.Insert(index, value);80
}81

82
public void Remove(OrderInfo value) 83
{84
List.Remove(value);85
}86

87
public new OrderInfoCollectionEnumerator GetEnumerator() 88
{89
return new OrderInfoCollectionEnumerator(this);90
}91

92
#endregion93

94

95
#region OrderInfoCollectionEnumerator 实现96

97
public class OrderInfoCollectionEnumerator : IEnumerator 98
{99
private IEnumerator _enumerator;100
private IEnumerable _temp;101
102
public OrderInfoCollectionEnumerator(OrderInfoCollection mappings)103
{104
_temp = ((IEnumerable)(mappings));105
_enumerator = _temp.GetEnumerator();106
}107
108
public OrderInfo Current109
{110
get {return ((OrderInfo)(_enumerator.Current));}111
}112
113
object IEnumerator.Current114
{115
get {return _enumerator.Current;}116
}117
118
public bool MoveNext()119
{120
return _enumerator.MoveNext();121
}122
123
bool IEnumerator.MoveNext()124
{125
return _enumerator.MoveNext();126
}127
128
public void Reset()129
{130
_enumerator.Reset();131
}132
133
void IEnumerator.Reset() 134
{135
_enumerator.Reset();136
}137
}138
#endregion 139

140

141
#region IBindingList 成员142

143
private ListChangedEventArgs resetEvent = new ListChangedEventArgs(ListChangedType.Reset, -1);144
private ListChangedEventHandler onListChanged;145

146
public bool AllowEdit 147
{ 148
get {return true;}149
}150

151
public bool AllowNew 152
{ 153
get {return true;}154
}155

156
public bool AllowRemove 157
{ 158
get {return true;}159
}160

161
public bool SupportsChangeNotification 162
{ 163
get {return true;}164
}165

166
public bool SupportsSearching 167
{ 168
get {return false;}169
}170

171
public bool SupportsSorting172
{ 173
get {return false;}174
}175

176
public void AddIndex(PropertyDescriptor property)177
{178
throw new NotSupportedException();179
}180
public void ApplySort(PropertyDescriptor property, System.ComponentModel.ListSortDirection direction)181
{182
throw new NotSupportedException();183
}184
public PropertyDescriptor SortProperty185
{186
get{throw new NotSupportedException();187
//return null;188
}189
}190
public int Find(PropertyDescriptor property, object key)191
{192
throw new NotSupportedException(); 193
//return 0;194
}195
public void RemoveSort()196
{197
throw new NotSupportedException(); 198
}199
public void RemoveIndex(PropertyDescriptor property)200
{201
throw new NotSupportedException(); 202
}203
public bool IsSorted204
{205
get { throw new NotSupportedException();206
//return false;207
}208
}209
public System.ComponentModel.ListSortDirection SortDirection210
{211
get{throw new NotSupportedException();212
//return new System.ComponentModel.ListSortDirection ();213
}214
}215
public event ListChangedEventHandler ListChanged 216
{217
add{onListChanged += value;}218
remove{onListChanged -= value;}219
}220

221
protected virtual void OnListChanged(ListChangedEventArgs ev) 222
{223
if (onListChanged != null) 224
{225
onListChanged(this, ev);226
}227
}228
protected override void OnClearComplete() 229
{230
OnListChanged(resetEvent);231
}232
private void RemoveChild(Object source, OrderInfo.OrderInfoEventArgs e)233
{234
List.Remove(source);235
}236
protected override void OnInsertComplete(int index, object value) 237
{238
((OrderInfo)(value)).RemoveMe += new OrderInfo.OrderInfoEventHandler(RemoveChild); 239
OnListChanged(new ListChangedEventArgs(ListChangedType.ItemAdded, index));240
}241
protected override void OnRemoveComplete(int index, object value) 242
{243
OnListChanged(new ListChangedEventArgs(ListChangedType.ItemDeleted, index));244
}245
protected override void OnSetComplete(int index, object oldValue, object newValue) 246
{247
if (oldValue != newValue) 248
{249
OnListChanged(new ListChangedEventArgs(ListChangedType.ItemAdded, index));250
}251
}252

253
#endregion254
}255
}上面是实体的集合,下面是实体的写法
1
using System;
2
using System.Data;
3
using System.Collections;
4
using System.ComponentModel;
5
6
namespace Entity
7
{
8
/// <summary>
9
/// Order的描述
10
/// </summary>
11
public class OrderInfo : IEditableObject,IDataErrorInfo
12
{
13
14
#region 实体 结构体
15
/// <summary>
16
/// 类OrderInfo的实体结构体
17
/// </summary>
18
struct OrderInfoData
19
{
20
internal string _id;
21
internal string _name;
22
}
23
24
#endregion
25
26
27
#region 私有变量
28
29
private OrderInfoData custData; //类实体的值
30
private OrderInfoData backupData; //类实体的备份值(用于CancelEdit的时候的恢复)
31
private bool mEditing = false; //是否处于编辑状态
32
private bool mIsNew = true; //是否是新建状态
33
34
#endregion
35
36
37
#region 构造函数
38
39
/// <summary>
40
/// 默认构造函数
41
/// </summary>
42
public OrderInfo():base()
43
{
44
this.custData = new OrderInfoData();
45
this.custData._id = "";
46
this.custData._name = "";
47
}
48
49
50
/// <summary>
51
/// 构造函数,所有公开属性赋值
52
/// </summary>
53
/// <param name="m_id">属性ID的描述</param>
54
/// <param name="m_name">属性Name的描述</param>
55
public OrderInfo(string m_id,string m_name)
56
{
57
this.custData = new OrderInfoData();
58
this.custData._id = m_id;
59
this.custData._name = m_name;
60
}
61
62
#endregion
63
64
65
#region 实体属性
66
67
/// <summary>
68
/// 属性ID的描述
69
/// </summary>
70
public string ID
71
{
72
get{return this.custData._id;}
73
set{this.custData._id = value;}
74
}
75
76
/// <summary>
77
/// 属性Name的描述
78
/// </summary>
79
public string Name
80
{
81
get{return this.custData._name;}
82
set{this.custData._name = value;}
83
}
84
85
86
#endregion
87
88
89
#region IEditableObject 成员
90
91
public void EndEdit()
92
{
93
if (mEditing)
94
{
95
mEditing = false;
96
mIsNew = false;
97
}
98
}
99
100
internal class OrderInfoEventArgs : EventArgs
101
{
102
// 定义事件成员,用于提供有关事件的信息
103
}
104
internal delegate void OrderInfoEventHandler(Object source, OrderInfoEventArgs e);
105
internal event OrderInfoEventHandler RemoveMe;
106
public void CancelEdit()
107
{
108
if (mEditing)
109
{
110
mEditing = false;
111
this.custData = backupData;
112
if(mIsNew)
113
{
114
mIsNew = false;
115
RemoveMe(this, new OrderInfoEventArgs());
116
}
117
}
118
}
119
120
public void BeginEdit()
121
{
122
if (!mEditing)
123
{
124
mEditing = true;
125
this.backupData = custData;
126
}
127
}
128
129
#endregion
130
131
132
#region IDataErrorInfo 成员
133
134
public string Error
135
{
136
get{return "";}
137
}
138
139
public string this[string strErrorName]
140
{
141
get{return "";}
142
}
143
144
#endregion
145
}
146
}
using System;2
using System.Data;3
using System.Collections;4
using System.ComponentModel;5

6
namespace Entity7
{8
/// <summary>9
/// Order的描述10
/// </summary>11
public class OrderInfo : IEditableObject,IDataErrorInfo12
{13

14
#region 实体 结构体15
/// <summary>16
/// 类OrderInfo的实体结构体17
/// </summary>18
struct OrderInfoData19
{20
internal string _id;21
internal string _name;22
}23

24
#endregion25

26

27
#region 私有变量28

29
private OrderInfoData custData; //类实体的值30
private OrderInfoData backupData; //类实体的备份值(用于CancelEdit的时候的恢复)31
private bool mEditing = false; //是否处于编辑状态32
private bool mIsNew = true; //是否是新建状态33

34
#endregion35

36

37
#region 构造函数38

39
/// <summary>40
/// 默认构造函数41
/// </summary>42
public OrderInfo():base()43
{44
this.custData = new OrderInfoData();45
this.custData._id = "";46
this.custData._name = "";47
}48

49

50
/// <summary>51
/// 构造函数,所有公开属性赋值52
/// </summary>53
/// <param name="m_id">属性ID的描述</param>54
/// <param name="m_name">属性Name的描述</param>55
public OrderInfo(string m_id,string m_name)56
{57
this.custData = new OrderInfoData();58
this.custData._id = m_id;59
this.custData._name = m_name;60
}61

62
#endregion63

64

65
#region 实体属性66

67
/// <summary>68
/// 属性ID的描述69
/// </summary>70
public string ID71
{72
get{return this.custData._id;}73
set{this.custData._id = value;}74
}75

76
/// <summary>77
/// 属性Name的描述78
/// </summary>79
public string Name80
{81
get{return this.custData._name;}82
set{this.custData._name = value;}83
}84

85

86
#endregion87

88

89
#region IEditableObject 成员90

91
public void EndEdit()92
{93
if (mEditing) 94
{95
mEditing = false;96
mIsNew = false;97
}98
}99

100
internal class OrderInfoEventArgs : EventArgs101
{102
// 定义事件成员,用于提供有关事件的信息103
}104
internal delegate void OrderInfoEventHandler(Object source, OrderInfoEventArgs e);105
internal event OrderInfoEventHandler RemoveMe;106
public void CancelEdit()107
{108
if (mEditing) 109
{110
mEditing = false;111
this.custData = backupData;112
if(mIsNew)113
{114
mIsNew = false;115
RemoveMe(this, new OrderInfoEventArgs());116
}117
}118
}119

120
public void BeginEdit()121
{122
if (!mEditing) 123
{124
mEditing = true;125
this.backupData = custData;126
}127
}128

129
#endregion130

131

132
#region IDataErrorInfo 成员133

134
public string Error135
{ 136
get{return "";}137
} 138

139
public string this[string strErrorName] 140
{ 141
get{return "";}142
} 143

144
#endregion145
}146
}



浙公网安备 33010602011771号