Table是怎样炼成的:Row、RowCollection
2007-02-13 22:40
309 查看
接下来的连续几篇,我们要演练作一个描述通用的二维表,并演示该二维表的继承通途。
先定义数据行的状态
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
}
开始定义数据行了
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
}
下一篇,我们定义Column和ColumnCollection
先定义数据行的状态
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
}
开始定义数据行了
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
}
下一篇,我们定义Column和ColumnCollection
相关文章推荐
- Table是怎样炼成的:Row、RowCollection
- Table是怎样炼成的:SaleReport Table的继承者
- Table是怎样炼成的:HtmlTable
- Table是怎样炼成的:Table
- Table是怎样炼成的:Column、ColumnCollection
- Table是怎样炼成的:Column、ColumnCollection
- Table是怎样炼成的:HtmlTable
- Table是怎样炼成的:Table
- Table是怎样炼成的:HtmlTable
- Table是怎样炼成的:SaleReport Table的继承者
- Table是怎样炼成的:SaleReport Table的继承者
- 项目评估与计划(七)- 优秀项目经理是怎样炼成的
- 软工阅读作业之二------真正“有用”的软件是怎样炼成的
- 优秀嵌入式linux工程师是怎样炼成的?
- 最强AlphaGo怎样炼成?刚刚,DeepMind团队进行了全面解读
- OFBIZ 条件语句是怎样炼成的?
- 高手是怎样炼成的
- 高手是怎样炼成的
- 计算机高手是怎样炼成的
- 伟大的程序员是怎样炼成的?