トップ回答者
動的にテーブルを作成した場合のセルの結合について

質問
-
初歩的な質問ですみません。
動的にセルを作り出すテーブルコントロールにおいて、
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);
回答
-
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
すべての返信
-
やりたいことがよくわかりません。
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これとはやりたいことが違うという場合は、もっと具体的にどうしたいのか書いてください。また、コードは中途半端に省略しないで、全体が分かる必要最小限(あくまで必要最小限でお願いします)をアップしてください。
-
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