如何将.NET TableCell渲染为TH而不是TD?

时间:2010-05-19 18:01:50

标签: .net

我正在动态构建一个.NET表,包括带有TablesSection集的TableRows,从而产生1个THEAD行和多个TBODY行。现在我需要在THEAD行中获取TableCells以使用TH标签而不是TD标签进行渲染。我怎么做?我还没有找到一个TableCell属性,它赢了,让我将Literals添加到行Cells集合中。

3 个答案:

答案 0 :(得分:14)

您是否尝试过TableHeaderCell

答案 1 :(得分:0)

您可以使用HtmlGenericControl th = new HtmlGenericControl("th")并将其添加到thead行。

答案 2 :(得分:0)

另一个解决方案是继承TableCell类并覆盖Render方法。

这使您能够真正自定义WebControl,并添加可能使您的特定方案受益的其他方法。

protected override void Render(HtmlTextWriter writer)
    {
        if (Type == CellType.th)
        {
            writer.Write(HtmlTextWriter.TagLeftChar + "th"); // Render <th
            Attributes.Render(writer); // Render any associated attributes
            writer.Write(HtmlTextWriter.TagRightChar); // Render >
            base.RenderContents(writer); // Render the content between the <th></th> tags
            writer.Write(HtmlTextWriter.EndTagLeftChars + "th" + HtmlTextWriter.TagRightChar); // Render </th>
        }
        else
            base.Render(writer); // Defaults to rendering <td>
    }

如果您希望分别自定义它们,此解决方案允许您继承一个类而不是TableCellTableHeaderCell

修改

Type语句中的if属性是该类的自定义属性,我在其中添加了enum以简化适用的类型。

public enum CellType
{
    td,
    th
}

private CellType _Type;
public CellType Type
{
    get { return _Type; }
    set { _Type = value; }
}