天天看点

Table是怎样炼成的:Table

描述一个数据表

1

Table是怎样炼成的:Table

 /// <summary>

2

Table是怎样炼成的:Table

 /// 描述一个数据表

3

Table是怎样炼成的:Table

 /// </summary>

4

Table是怎样炼成的:Table

 public class Table

5

Table是怎样炼成的:Table

 {

6

Table是怎样炼成的:Table

7

Table是怎样炼成的:Table

 protected Table(string name, ColumnCollection cols)

8

Table是怎样炼成的:Table

9

Table是怎样炼成的:Table

 TableName = name;

10

Table是怎样炼成的:Table

 Columns = cols;

11

Table是怎样炼成的:Table

 Rows = new RowCollection();

12

Table是怎样炼成的:Table

 }

13

Table是怎样炼成的:Table

14

Table是怎样炼成的:Table

15

Table是怎样炼成的:Table

 /// 获取或设置表的列架构

16

Table是怎样炼成的:Table

17

Table是怎样炼成的:Table

 protected readonly ColumnCollection Columns;

18

Table是怎样炼成的:Table

19

Table是怎样炼成的:Table

 /// 获取或设置表的数据行

20

Table是怎样炼成的:Table

21

Table是怎样炼成的:Table

 protected RowCollection Rows;

22

Table是怎样炼成的:Table

23

Table是怎样炼成的:Table

 /// 获取或设置表的名称

24

Table是怎样炼成的:Table

25

Table是怎样炼成的:Table

 protected readonly string TableName;

26

Table是怎样炼成的:Table

27

Table是怎样炼成的:Table

28

Table是怎样炼成的:Table

 /// 将该行数据状态改为RowState.Unchanged

29

Table是怎样炼成的:Table

30

Table是怎样炼成的:Table

 protected void AcceptChanges()

31

Table是怎样炼成的:Table

32

Table是怎样炼成的:Table

 for (int i = 0; i <= Rows.Count - 1; i++)

33

Table是怎样炼成的:Table

34

Table是怎样炼成的:Table

 Rows[i].AcceptChanges();

35

Table是怎样炼成的:Table

36

Table是怎样炼成的:Table

37

Table是怎样炼成的:Table

38

Table是怎样炼成的:Table

39

Table是怎样炼成的:Table

 /// 移除所有数据行

40

Table是怎样炼成的:Table

41

Table是怎样炼成的:Table

 protected void Clear()

42

Table是怎样炼成的:Table

43

Table是怎样炼成的:Table

 this.Rows.Clear();

44

Table是怎样炼成的:Table

45

Table是怎样炼成的:Table

46

Table是怎样炼成的:Table

47

Table是怎样炼成的:Table

 /// 返回状态匹配的数据行,并以新数据表的形式体现

48

Table是怎样炼成的:Table

49

Table是怎样炼成的:Table

 /// <param name="rowState"></param>

50

Table是怎样炼成的:Table

 /// <returns></returns>

51

Table是怎样炼成的:Table

 protected Table GetChanges(RowState rowState)

52

Table是怎样炼成的:Table

53

Table是怎样炼成的:Table

 Table tmpTable = new Table(rowState.ToString(), this.Columns);

54

Table是怎样炼成的:Table

 foreach (Row row in Rows)

55

Table是怎样炼成的:Table

56

Table是怎样炼成的:Table

 if (row.RowState == rowState)

57

Table是怎样炼成的:Table

58

Table是怎样炼成的:Table

 tmpTable.Rows.Add(row);

59

Table是怎样炼成的:Table

60

Table是怎样炼成的:Table

61

Table是怎样炼成的:Table

 return tmpTable;

62

Table是怎样炼成的:Table

63

Table是怎样炼成的:Table

64

Table是怎样炼成的:Table

65

Table是怎样炼成的:Table

66

Table是怎样炼成的:Table

 /// 依据现有的数据表的架构,生成新的数据行

67

Table是怎样炼成的:Table

68

Table是怎样炼成的:Table

69

Table是怎样炼成的:Table

 protected Row NewRow()

70

Table是怎样炼成的:Table

71

Table是怎样炼成的:Table

 return new Row(Columns, this.TableName);

72

Table是怎样炼成的:Table

73

Table是怎样炼成的:Table

74

Table是怎样炼成的:Table

75

Table是怎样炼成的:Table

 /// 按关键字(数据行的第一列)匹配,并返回符合的数据行

76

Table是怎样炼成的:Table

77

Table是怎样炼成的:Table

 /// <param name="filterKey"></param>

78

Table是怎样炼成的:Table

79

Table是怎样炼成的:Table

 protected Row[] Select(string filterKey)

80

Table是怎样炼成的:Table

81

Table是怎样炼成的:Table

 System.Collections.ArrayList tmpRows = new System.Collections.ArrayList();

82

Table是怎样炼成的:Table

83

Table是怎样炼成的:Table

84

Table是怎样炼成的:Table

 if (row[0].ToString() == filterKey)

85

Table是怎样炼成的:Table

86

Table是怎样炼成的:Table

 tmpRows.Add(row);

87

Table是怎样炼成的:Table

88

Table是怎样炼成的:Table

89

Table是怎样炼成的:Table

 return (Row[])tmpRows.ToArray(typeof(Row));

90

Table是怎样炼成的:Table

91

Table是怎样炼成的:Table

92

Table是怎样炼成的:Table

93

Table是怎样炼成的:Table

 /// 打印Table的数据

94

Table是怎样炼成的:Table

95

Table是怎样炼成的:Table

 public virtual void Print()

96

Table是怎样炼成的:Table

97

Table是怎样炼成的:Table

 System.Text.StringBuilder sb = new StringBuilder();

98

Table是怎样炼成的:Table

99

Table是怎样炼成的:Table

 foreach (Column col in this.Columns)

100

Table是怎样炼成的:Table

101

Table是怎样炼成的:Table

 sb.AppendFormat("{0}/t", col.ColumnName);

102

Table是怎样炼成的:Table

103

Table是怎样炼成的:Table

 sb.AppendLine();

104

Table是怎样炼成的:Table

 System.Console.WriteLine(sb.ToString());

105

Table是怎样炼成的:Table

 foreach (Row row in this.Rows)

106

Table是怎样炼成的:Table

107

Table是怎样炼成的:Table

 foreach (object obj in row.ItemArray)

108

Table是怎样炼成的:Table

109

Table是怎样炼成的:Table

 System.Console.Write("{0}/t", obj);

110

Table是怎样炼成的:Table

111

Table是怎样炼成的:Table

 System.Console.WriteLine();

112

Table是怎样炼成的:Table

113

Table是怎样炼成的:Table

114

Table是怎样炼成的:Table

好,到此Table所涉及的5个类都定义实现完毕了。

我们来回顾一下,Table中什么是最基础的,什么是最重要的?

按我们一般来看,表中最重要基础的实行,最重要的是数据。其实表最基础是的架构,架构就是列的定义,而行只不过是列的数据体现形式。

所以Table在构造的时候,必须先定义列的集合,而Row的构造函数是protected internal的,意义是不能在外面被构造,必须通过Table来依据列的定义来构造。

下篇,我们将看到我们对Table的继承,发挥更多OO体现。

本文转自shyleoking 51CTO博客,原文链接:http://blog.51cto.com/shyleoking/806271