昨天我们做的Table具有了Print方法,可以简单的打印数据。
现在我需要一个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
然后我们运行该SaleReport

SaleReport report = new SaleReport("销售台帐");

report.AddRecord("Alex", "Phone", 2600);

report.AddRecord("Alex", "PC", 4560);

report.AddRecord("Alex", "Table", 234);

report.AddRecord("Sidney", "Phone", 2100);

report.AddRecord("Sidney", "TV", 4500);

report.AddRecord("Tom", "oven", 300);

report.AddRecord("Leo", "oven", 240);


report.Print();
运行的结果是

<table>

<thead>

<tr>

<th>序号</th>

<th>姓名</th>

<th>商品名称</th>

<th>日期</th>

<th>数量</th>

</tr>

</thead>


<td>1</td>

<td>Alex</td>

<td>Phone</td>

<td>2007-2-14 20:39:31</td>

<td>2600</td>



<td>2</td>


<td>PC</td>


<td>4560</td>



<td>3</td>


<td>Table</td>


<td>234</td>



<td>4</td>

<td>Sidney</td>



<td>2100</td>



<td>5</td>


<td>TV</td>


<td>4500</td>
45

46

47

<td>6</td>
48

<td>Tom</td>
49

<td>oven</td>
50

51

<td>300</td>
52

53

54

<td>7</td>
55

<td>Leo</td>
56

57

58

<td>240</td>
59

60

</table>
现在我们得到了一个可以在HTML上产生表格的结果了。
谁说这个Table没有必要写的?
本文转自shyleoking 51CTO博客,原文链接:http://blog.51cto.com/shyleoking/806268