作成したテーブルを繰り返し処理し、各行から最初のセルを取得していました。細胞の種類に基づいて、さまざまなことを行います。例:
if(cCell.type=='th' && cCell.parent.next.Cells[0].type == 'th'){
cCell.parent.parent.controls.remove(cCell.parent);
}
現在のセルとその下のセルの両方が th である場合、現在のセル行を削除します。
作成したテーブルを繰り返し処理し、各行から最初のセルを取得していました。細胞の種類に基づいて、さまざまなことを行います。例:
if(cCell.type=='th' && cCell.parent.next.Cells[0].type == 'th'){
cCell.parent.parent.controls.remove(cCell.parent);
}
現在のセルとその下のセルの両方が th である場合、現在のセル行を削除します。
トム・イングラムは正しいようです...
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>
HtmlTableHeaderCell コントロールはありませんが、TableHeaderCell<th>
はページの html で になりますが、 TableCellは<td>
です。問題のコンテキストを完全には理解していませんが、typeof() を使用して TableCell と TableHeaderCell を区別できるはずです。すべての HtmlControls のこのリスト<td>
は、 と の間にタイプの違いがないことを確認し<th>
ます。どちらも HtmlTableCell です。
プログラムでテーブルを生成したい場合は、Web コントロールを使用するのが最適だと思いますが、既に作成されたテーブルがある場合は、TagName を使用しても本質的に問題はありません。
チェックしているテーブル セルのタイプが System.Web.UI.WebControls.TableCell の場合、TagKey プロパティを使用できるはずです (ここにリンクの説明を入力してください)。
次に、コードは次のようになります。
if(cCell.TagKey == HtmlTextWriterTag.Td && cCell.parent.next.Cells[0].TagKey == HtmlTextWriterTag.Th){
cCell.parent.parent.controls.remove(cCell.parent);
}
何を達成しようとしているのかはわかりませんが、もっと簡単な方法があるに違いありません。