接下来的连续几篇,我们要演练作一个描述通用的二维表,并演示该二维表的继承通途。
先定义数据行的状态
开始定义数据行了
下一篇,我们定义Column和ColumnCollection
先定义数据行的状态
1
/**////<summary>
2
///数据行的状态
3
///</summary>
4
publicenumRowState
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
}

/**////<summary>2
///数据行的状态3
///</summary>4
publicenumRowState5


{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
Unchanged22
}
开始定义数据行了
1
/**////<summary>
2
///数据行
3
///</summary>
4
publicclassRow
5

{
6
privateobject[]datas;
7
privateSystem.Collections.ArrayListcolNames;
8
9
/**////<summary>
10
///该数据行所依赖的表的名称
11
///</summary>
12
publicreadonlystringTableName;
13
/**////<summary>
14
///该数据行的状态
15
///</summary>
16
publicRowStateRowState;
17
18
19
protectedinternalRow(ColumnCollectioncolumns,stringtableName)
20

{
21
datas=newobject[columns.Count];
22
this.TableName=tableName;
23
colNames=newSystem.Collections.ArrayList();
24
foreach(Columncolincolumns)
25

{
26
colNames.Add(col.ColumnName);
27
}
28
}
29
30
31
32
/**////<summary>
33
///获取或设置行的指定列的数据
34
///</summary>
35
///<paramname="index">列的索引号,从0开始</param>
36
///<returns>列中存储的数据</returns>
37
publicobjectthis[intindex]
38

{
39
set
40

{
41
datas[index]=value;
42
this.RowState=RowState.Modified;
43
}
44
get
45

{
46
returndatas[index];
47
}
48
}
49
50
/**////<summary>
51
///获取或设置行的指定列的数据
52
///</summary>
53
///<paramname="columnName">列的名称</param>
54
///<returns>列中存储的数据</returns>
55
publicobjectthis[stringcolumnName]
56

{
57
set
58

{
59
this[colNames.IndexOf(columnName)]=value;
60
}
61
get
62

{
63
returnthis[colNames.IndexOf(columnName)];
64
}
65
}
66
67
68
/**////<summary>
69
///获取或设置行的全部数据
70
///</summary>
71
publicobject[]ItemArray
72

{
73
get
74

{
75
returndatas;
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
publicvoidAcceptChanges()
91

{
92
this.RowState=RowState.Unchanged;
93
}
94
95
/**////<summary>
96
///为该行作删除标记
97
///</summary>
98
publicvoidDelete()
99

{
100
this.RowState=RowState.Deleted;
101
}
102
103
/**////<summary>
104
///将该行的状态设置为RowState.Added
105
///</summary>
106
publicvoidSetAdded()
107

{
108
if(this.RowState==RowState.Unchanged)
109

{
110
this.RowState=RowState.Added;
111
}
112
}
113
114
/**////<summary>
115
///将该行数据状态设置为RowState.Modified
116
///</summary>
117
publicvoidSetModified()
118

{
119
if(this.RowState==RowState.Unchanged||this.RowState==RowState.Added)
120

{
121
this.RowState=RowState.Modified;
122
}
123
}
124
}

/**////<summary>2
///数据行3
///</summary>4
publicclassRow5


{6
privateobject[]datas;7
privateSystem.Collections.ArrayListcolNames;8

9

/**////<summary>10
///该数据行所依赖的表的名称11
///</summary>12
publicreadonlystringTableName;13

/**////<summary>14
///该数据行的状态15
///</summary>16
publicRowStateRowState;17

18

19
protectedinternalRow(ColumnCollectioncolumns,stringtableName)20


{21
datas=newobject[columns.Count];22
this.TableName=tableName;23
colNames=newSystem.Collections.ArrayList();24
foreach(Columncolincolumns)25


{26
colNames.Add(col.ColumnName);27
}28
}29

30

31

32

/**////<summary>33
///获取或设置行的指定列的数据34
///</summary>35
///<paramname="index">列的索引号,从0开始</param>36
///<returns>列中存储的数据</returns>37
publicobjectthis[intindex]38


{39
set40


{41
datas[index]=value;42
this.RowState=RowState.Modified;43
}44
get45


{46
returndatas[index];47
}48
}49

50

/**////<summary>51
///获取或设置行的指定列的数据52
///</summary>53
///<paramname="columnName">列的名称</param>54
///<returns>列中存储的数据</returns>55
publicobjectthis[stringcolumnName]56


{57
set58


{59
this[colNames.IndexOf(columnName)]=value;60
}61
get62


{63
returnthis[colNames.IndexOf(columnName)];64
}65
}66

67

68

/**////<summary>69
///获取或设置行的全部数据70
///</summary>71
publicobject[]ItemArray72


{73
get74


{75
returndatas;76
}77
set78


{79
if(value.Length==datas.Length)80


{81
datas=value;82
this.RowState=RowState.Modified;83
}84
}85
}86

87

/**////<summary>88
///将该行数据状态改为RowState.Unchanged89
///</summary>90
publicvoidAcceptChanges()91


{92
this.RowState=RowState.Unchanged;93
}94

95

/**////<summary>96
///为该行作删除标记97
///</summary>98
publicvoidDelete()99


{100
this.RowState=RowState.Deleted;101
}102

103

/**////<summary>104
///将该行的状态设置为RowState.Added105
///</summary>106
publicvoidSetAdded()107


{108
if(this.RowState==RowState.Unchanged)109


{110
this.RowState=RowState.Added;111
}112
}113

114

/**////<summary>115
///将该行数据状态设置为RowState.Modified116
///</summary>117
publicvoidSetModified()118


{119
if(this.RowState==RowState.Unchanged||this.RowState==RowState.Added)120


{121
this.RowState=RowState.Modified;122
}123
}124
}
下一篇,我们定义Column和ColumnCollection
本文介绍了一个用于管理二维表数据行的C#类,包括数据行的状态定义、数据的存取方法及状态变更操作。
6843

被折叠的 条评论
为什么被折叠?



