你如何确定HtmlTableCell控件是th还是td?

时间:2012-06-27 22:09:39

标签: c# asp.net html-table controls

我正在迭代我创建的一个表并从每一行获取第一个单元格。根据细胞的类型,做不同的事情。例如:

if(cCell.type=='th' && cCell.parent.next.Cells[0].type == 'th'){
  cCell.parent.parent.controls.remove(cCell.parent);
}

说明,如果当前单元格和它下面的单元格都是th,那么删除当前单元格行。

3 个答案:

答案 0 :(得分:1)

没有HtmlTableHeaderCell控件,但TableHeaderCell在页面的html中成为<th>,而TableCell<td>。我不完全理解您的问题的上下文,但您应该能够使用typeof()区分TableCell和TableHeaderCell。所有HtmlControls的list确认<td><th>之间没有类型差异,两者都是HtmlTableCell。

我认为如果你想以编程方式生成表,那么最好使用Web控件,但如果你有一个已经创建的表,那么使用TagName没有任何内在错误。

答案 1 :(得分:1)

Tom Ingram似乎是正确的......

    foreach (HtmlTableRow row in MyTable.Rows)
    {
        if (row.Cells[0].TagName.ToLower() == "th")
        {
            // header.
        }
        else
        {
            // cell.
        }
    }

使用的示例表...

<table runat="server" id="MyTable">
    <tr>
        <th>header 1</th>
        <th>header 2</th>
    </tr>
    <tr>
        <td>cell 1</td>
        <td>cell 2</td>
    </tr>
</table>

答案 2 :(得分:1)

如果您检查的表格单元格类型为System.Web.UI.WebControls.TableCell,则应该能够使用TagKey属性(enter link description here

然后你的代码将是:

if(cCell.TagKey == HtmlTextWriterTag.Td && cCell.parent.next.Cells[0].TagKey == HtmlTextWriterTag.Th){
  cCell.parent.parent.controls.remove(cCell.parent);
}

不确定你想要完成什么,但我打赌有更简单的方法可以做到。