上一节讲的用将 BulletedList 转换成 p,这一节讲将其转换成 table。
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls.Adapters;
namespace Cftea
{
public class BulletedListAdapter : WebControlAdapter
{
protected override void RenderBeginTag(HtmlTextWriter writer)
{
writer.WriteLine();
writer.WriteBeginTag("table");
writer.Write(HtmlTextWriter.TagRightChar);
//base.RenderBeginTag(writer);
}
protected override void RenderContents(HtmlTextWriter writer)
{
BulletedList bl = Control as BulletedList;
if (bl != null)
{
writer.Indent++;
int i = 0;
for (i = 0; i < bl.Items.Count; i++)
{
writer.WriteLine();
writer.WriteBeginTag("tr");
writer.Write(HtmlTextWriter.TagRightChar);
writer.WriteLine();
writer.Indent++;
writer.WriteBeginTag("td");
writer.Write(HtmlTextWriter.TagRightChar);
writer.Write(bl.Items[i].Text);
writer.WriteEndTag("td");
writer.WriteLine();
writer.Indent--;
writer.WriteEndTag("tr");
}
}
//base.RenderContents(writer);
}
protected override void RenderEndTag(HtmlTextWriter writer)
{
writer.WriteLine();
writer.Indent--;
writer.WriteEndTag("table");
//base.RenderEndTag(writer);
}
}
}
可以看到新增了一些内容:
- writer.WriteLine();
- writer.Indent; 代码缩进。
有 ASP 编程经验的大概都知道,以上代码和利用 ASP 将数据库中的数据以表格形式输出没有什么两样,并不复杂。
生成的 HTML 代码如下:
<table>
<tr>
<td>Item1</td>
</tr>
<tr>
<td>Item2</td>
</tr>
<tr>
<td>Item3</td>
</tr>
</table>