现在我需要一个Table,可以把Table中的数据以Html的Table的格式输出。
而我只需要重写Print方法
1
public class HtmlTable : Table
2
{
3
public HtmlTable(string reportName, ColumnCollection cols)
4
: base(reportName, cols)
5
{
6
7
}
8
9
public override void Print()
10
{
11
System.Text.StringBuilder sb = new StringBuilder();
12
13
//输出Table的开始标记
14
sb.Append("<table>\n");
15
//输出表头
16
sb.Append("<thead>\n<tr>\n");
17
foreach (Column col in this.Columns)
18
{
19
sb.AppendFormat("<th>{0}</th>\n", col.ColumnName);
20
}
21
sb.AppendLine("</tr>\n</thead>");
22
23
24
//输出数据行
25
foreach (Row row in this.Rows)
26
{
27
sb.AppendLine("<tr>");
28
foreach (object obj in row.ItemArray)
29
{
30
sb.AppendFormat("<td>{0}</td>\n", obj);
31
//System.Console.Write("{0}\t", obj);
32
}
33
sb.AppendLine("</tr>");
34
System.Console.WriteLine();
35
}
36
37
//输出Table的结束标记
38
sb.Append("</table>\n");
39
40
System.Console.WriteLine(sb.ToString());
41
42
}
43
44
}

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

现在我将SaleReport改继承HtmlTable(参见Table是怎样炼成的:SaleReport Table的继承者 ),其他都不要改动。
然后我们运行该SaleReport
1
SaleReport report = new SaleReport("销售台帐");
2
report.AddRecord("Alex", "Phone", 2600);
3
report.AddRecord("Alex", "PC", 4560);
4
report.AddRecord("Alex", "Table", 234);
5
report.AddRecord("Sidney", "Phone", 2100);
6
report.AddRecord("Sidney", "TV", 4500);
7
report.AddRecord("Tom", "oven", 300);
8
report.AddRecord("Leo", "oven", 240);
9
10
report.Print();

2

3

4

5

6

7

8

9

10

运行的结果是
1
<table>
2
<thead>
3
<tr>
4
<th>序号</th>
5
<th>姓名</th>
6
<th>商品名称</th>
7
<th>日期</th>
8
<th>数量</th>
9
</tr>
10
</thead>
11
<tr>
12
<td>1</td>
13
<td>Alex</td>
14
<td>Phone</td>
15
<td>2007-2-14 20:39:31</td>
16
<td>2600</td>
17
</tr>
18
<tr>
19
<td>2</td>
20
<td>Alex</td>
21
<td>PC</td>
22
<td>2007-2-14 20:39:31</td>
23
<td>4560</td>
24
</tr>
25
<tr>
26
<td>3</td>
27
<td>Alex</td>
28
<td>Table</td>
29
<td>2007-2-14 20:39:31</td>
30
<td>234</td>
31
</tr>
32
<tr>
33
<td>4</td>
34
<td>Sidney</td>
35
<td>Phone</td>
36
<td>2007-2-14 20:39:31</td>
37
<td>2100</td>
38
</tr>
39
<tr>
40
<td>5</td>
41
<td>Sidney</td>
42
<td>TV</td>
43
<td>2007-2-14 20:39:31</td>
44
<td>4500</td>
45
</tr>
46
<tr>
47
<td>6</td>
48
<td>Tom</td>
49
<td>oven</td>
50
<td>2007-2-14 20:39:31</td>
51
<td>300</td>
52
</tr>
53
<tr>
54
<td>7</td>
55
<td>Leo</td>
56
<td>oven</td>
57
<td>2007-2-14 20:39:31</td>
58
<td>240</td>
59
</tr>
60
</table>

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

现在我们得到了一个可以在HTML上产生表格的结果了。
谁说这个Table没有必要写的?