none
動的にテーブルを作成した場合のセルの結合について RRS feed

  • 質問


  • 初歩的な質問ですみません。
    動的にセルを作り出すテーブルコントロールにおいて、
    3列ずつセルを結合していきたいのですが、
    下記のように、まだ出来ていない列に対して
    ColumnSpan を行っても、意味がないようで、
    列を作った後、左側のセルを結合しようと考えたのですが、
    やり方がわかりません。
    tCell.ColumnSpan = -3;で左側が結合できるかと思ったのですが、
    出来ませんでした。
    左側のセルを結合することはできるのでしょうか?

    Table1.Rows.Clear();
    TableRow tRow = new TableRow();
    for (nCol = 0; nCol <= cCol; nCol++)
    {
        TableCell tCell = new TableCell();
        if (nCol % 3 == 0) {
             tCell.ColumnSpan = 3;
             tCell.Text = nCol.ToString();
        }                
        tCell.Width = 54 / tCnt;
        tRow.Cells.Add(tCell);
    }
    Table1.Rows.Add(tRow);

    2013年7月17日 7:24

回答

  • CoumnSpanなので、比較する行が必要です。例えば、以下のコードを実行してみて下さい。

    Table1.Rows.Clear();
    TableRow tRow = new TableRow();
    for (nCol = 0; nCol <= cCol; nCol++)
    {
        TableCell tCell = new TableCell();
        tCell.BorderStyle = BorderStyle.Solid;
    
        if (nCol % 3 == 0)
        {
            tCell.ColumnSpan = 3;
            tCell.Text = nCol.ToString();
            tCell.Width = 54 / tCnt;
            tRow.Cells.Add(tCell);
        }
    }
    Table1.Rows.Add(tRow);
    
    tRow = new TableRow();
    for (nCol = 0; nCol <= cCol; nCol++)
    {
        TableCell tCell = new TableCell();
        tCell.BorderStyle = BorderStyle.Solid;
    
        //if (nCol % 3 == 0)
        //{
        //    tCell.ColumnSpan = 3;
            tCell.Text = nCol.ToString();
        //}
        tCell.Width = 54 / tCnt;
        tRow.Cells.Add(tCell);
    }
    Table1.Rows.Add(tRow);


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク hys73 2013年7月17日 10:10
    2013年7月17日 9:02
    モデレータ

すべての返信

  • やりたいことがよくわかりません。

    GirdView や DataGrid から生成される table の左側に動的に列を追加するといったことがしたいのでしょうか。

    であれば、以下のページが参考になりませんか。以下のページのコードでは table の右側に動的に列を追加していますが、左に追加する場合は Add メソッドに代えて AddAt メソッドを使って第一引数を 0(ゼロ)にすることで可能です。

    DataGrid, GridView に動的に列を追加
    http://surferonwww.info/BlogEngine/post/2013/05/17/add-column-with-checkbox-to-datagrid-or-gridview-programmatically.aspx

    これとはやりたいことが違うという場合は、もっと具体的にどうしたいのか書いてください。また、コードは中途半端に省略しないで、全体が分かる必要最小限(あくまで必要最小限でお願いします)をアップしてください。

    2013年7月17日 7:56
  • CoumnSpanなので、比較する行が必要です。例えば、以下のコードを実行してみて下さい。

    Table1.Rows.Clear();
    TableRow tRow = new TableRow();
    for (nCol = 0; nCol <= cCol; nCol++)
    {
        TableCell tCell = new TableCell();
        tCell.BorderStyle = BorderStyle.Solid;
    
        if (nCol % 3 == 0)
        {
            tCell.ColumnSpan = 3;
            tCell.Text = nCol.ToString();
            tCell.Width = 54 / tCnt;
            tRow.Cells.Add(tCell);
        }
    }
    Table1.Rows.Add(tRow);
    
    tRow = new TableRow();
    for (nCol = 0; nCol <= cCol; nCol++)
    {
        TableCell tCell = new TableCell();
        tCell.BorderStyle = BorderStyle.Solid;
    
        //if (nCol % 3 == 0)
        //{
        //    tCell.ColumnSpan = 3;
            tCell.Text = nCol.ToString();
        //}
        tCell.Width = 54 / tCnt;
        tRow.Cells.Add(tCell);
    }
    Table1.Rows.Add(tRow);


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク hys73 2013年7月17日 10:10
    2013年7月17日 9:02
    モデレータ
  • 丁寧に説明頂きありがとうございます。

    良くわかりました。

    2013年7月17日 10:12