您的位置:首页 > 职场人生

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 休闲 Column 继承