昨天我们做的Table具有了Print方法,可以简单的打印数据。
现在我需要一个Table,可以把Table中的数据以Html的Table的格式输出。
而我只需要重写Print方法
现在我需要一个Table,可以把Table中的数据以Html的Table的格式输出。
而我只需要重写Print方法
1public 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 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改继承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 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();
运行的结果是
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<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>
现在我们得到了一个可以在HTML上产生表格的结果了。
谁说这个Table没有必要写的?