先定义数据行的状态
1
/// <summary>
2
/// 数据行的状态
3
/// </summary>
4
public enum RowState
5
{
6
/// <summary>
7
/// 新建状态
8
/// </summary>
9
Added,
10
/// <summary>
11
/// 删除状态
12
/// </summary>
13
Deleted,
14
/// <summary>
15
/// 修改状态
16
/// </summary>
17
Modified,
18
/// <summary>
19
/// 为止状态
20
/// </summary>
21
Unchanged
22
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

开始定义数据行了
1
/// <summary>
2
/// 数据行
3
/// </summary>
4
public class Row
5
{
6
private object[] datas;
7
private System.Collections.ArrayList colNames;
8
9
/// <summary>
10
/// 该数据行所依赖的表的名称
11
/// </summary>
12
public readonly string TableName;
13
/// <summary>
14
/// 该数据行的状态
15
/// </summary>
16
public RowState RowState;
17
18
19
protected internal Row(ColumnCollection columns, string tableName)
20
{
21
datas = new object[columns.Count];
22
this.TableName = tableName;
23
colNames = new System.Collections.ArrayList();
24
foreach (Column col in columns)
25
{
26
colNames.Add(col.ColumnName);
27
}
28
}
29
30
31
32
/// <summary>
33
/// 获取或设置行的指定列的数据
34
/// </summary>
35
/// <param name="index">列的索引号,从0开始</param>
36
/// <returns>列中存储的数据</returns>
37
public object this[int index]
38
{
39
set
40
{
41
datas[index] = value;
42
this.RowState = RowState.Modified;
43
}
44
get
45
{
46
return datas[index];
47
}
48
}
49
50
/// <summary>
51
/// 获取或设置行的指定列的数据
52
/// </summary>
53
/// <param name="columnName">列的名称</param>
54
/// <returns>列中存储的数据</returns>
55
public object this[string columnName]
56
{
57
set
58
{
59
this[colNames.IndexOf(columnName)] = value;
60
}
61
get
62
{
63
return this[colNames.IndexOf(columnName)];
64
}
65
}
66
67
68
/// <summary>
69
/// 获取或设置行的全部数据
70
/// </summary>
71
public object[] ItemArray
72
{
73
get
74
{
75
return datas;
76
}
77
set
78
{
79
if (value.Length == datas.Length)
80
{
81
datas = value;
82
this.RowState = RowState.Modified;
83
}
84
}
85
}
86
87
/// <summary>
88
/// 将该行数据状态改为RowState.Unchanged
89
/// </summary>
90
public void AcceptChanges()
91
{
92
this.RowState = RowState.Unchanged;
93
}
94
95
/// <summary>
96
/// 为该行作删除标记
97
/// </summary>
98
public void Delete()
99
{
100
this.RowState = RowState.Deleted;
101
}
102
103
/// <summary>
104
/// 将该行的状态设置为RowState.Added
105
/// </summary>
106
public void SetAdded()
107
{
108
if (this.RowState == RowState.Unchanged)
109
{
110
this.RowState = RowState.Added;
111
}
112
}
113
114
/// <summary>
115
/// 将该行数据状态设置为RowState.Modified
116
/// </summary>
117
public void SetModified()
118
{
119
if (this.RowState == RowState.Unchanged || this.RowState == RowState.Added)
120
{
121
this.RowState = RowState.Modified;
122
}
123
}
124
}

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

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

下一篇,我们定义Column和ColumnCollection