WebSurfer's Home

トップ > Blog 1   |   ログイン
APMLフィルター

Table の行のコピー作成

by WebSurfer 2010年9月9日 13:12

System.Web.UI.WebControls.Table の話です。

Table オブジェクトの、ある行のコピーを作って、その Table に追加するにはどうしたらいいでしょうか? 以下のような感じです。

オリジナルのテーブル 一行コピーして追加後のテーブル
オリジナル 一行コピー後

上のオリジナルの画像を作ったコードは以下の通りです。

<asp:Table id="Table1" 
    runat="server"
    CellPadding="10" 
    GridLines="Both"
    HorizontalAlign="Center">
    <asp:TableRow>
        <asp:TableCell>
            Item
        </asp:TableCell>
        <asp:TableCell>
            Description
        </asp:TableCell>
    </asp:TableRow>
    <asp:TableRow>
        <asp:TableCell>
            Row 0, Col 0
        </asp:TableCell>
        <asp:TableCell>
            Row 0, Col 1
        </asp:TableCell>
    </asp:TableRow>
    <asp:TableRow>
        <asp:TableCell>
            Row 1, Col 0
        </asp:TableCell>
        <asp:TableCell>
            Row 1, Col 1
        </asp:TableCell>
    </asp:TableRow>
</asp:Table>

この Table1 の一行目のコピーをプログラムで動的に作って、最終行の下に追加することを考えてみます。

以下のようにするとどうなるでしょう?

TableRow newRow = new TableRow();
newRow = Table1.Rows[0];
Table1.Rows.Add(newRow);

うまくいきそうに見えますが、これだと一行目が最下行の下に移動するだけです。

以下のように、TableRow だけでなく、その中身の TableCell のコピーも作って TableRow に設定し、それを Table に追加してやる必要があります。

TableRow newRow = new TableRow();
foreach (TableCell cell in Table1.Rows[0].Cells)
{
    TableCell newCell = new TableCell();
    newCell.Text = cell.Text;
    newRow.Cells.Add(newCell);
}
Table1.Rows.Add(newRow);

Table コンロトールはほとんど使わないし、実際にこのようなことをすることはなさそうなので、役に立たない話かもしれません。(汗) でも、昔、せっかく考えたことなので、忘れないように書いておきます。

Tags:

ASP.NET | ASP.NET

About this blog

2010年5月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。

Calendar

<<  2024年4月  >>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

View posts in large calendar