1

作成したテーブルを繰り返し処理し、各行から最初のセルを取得していました。細胞の種類に基づいて、さまざまなことを行います。例:

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

現在のセルとその下のセルの両方が th である場合、現在のセル行を削除します。

4

3 に答える 3

1

トム・イングラムは正しいようです...

    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>
于 2012-06-27T22:28:21.490 に答える
1

HtmlTableHeaderCell コントロールはありませんが、TableHeaderCell<th>はページの html で になりますが、 TableCell<td>です。問題のコンテキストを完全には理解していませんが、typeof() を使用して TableCell と TableHeaderCell を区別できるはずです。すべての HtmlControls のこのリスト<td>は、 と の間にタイプの違いがないことを確認し<th>ます。どちらも HtmlTableCell です。

プログラムでテーブルを生成したい場合は、Web コントロールを使用するのが最適だと思いますが、既に作成されたテーブルがある場合は、TagName を使用しても本質的に問題はありません。

于 2012-06-27T22:23:19.637 に答える
1

チェックしているテーブル セルのタイプが 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);
}

何を達成しようとしているのかはわかりませんが、もっと簡単な方法があるに違いありません。

于 2012-06-27T22:31:38.573 に答える