- - PR -
DataGridのヘッダを2行にする方法
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-09-15 00:35
DataGrid1.Controls(0).Controls.AddAt(0, item) の意味は、次のようになります。 DataGrid1.Controls(0)はDataGridTableを表します。これに全てのDataGridItemが属しますので、DataGrid1.Controls(0).Controlsで、DataGridItemの集合ということになります。この集合にAddAtで、0行目の位置に、新しく作成したDataGridItemを追加しています。0行目は一番上になりますので、既存のヘッダ行の上に新しいヘッダ行を追加することになります。 セルの結合はColumnSpanで行います。ColumnSpan=3とすれば、そのセルは1つで3列分の幅を取ることになります。 既存のヘッダ行が6列からなれば、セル1、セル2(ColumnSpan=2)、セル3(ColumnSpan=2)、セル4からなる新しいヘッダ行を追加した場合、イメージ的には以下のようになります。
| ||||||||
|
投稿日時: 2005-09-15 11:56
丁寧な解説ありがとうございます。できました!!
If e.Item.ItemType = ListItemType.Footer Then item = New DataGridItem(0, 0, ListItemType.Header) cell = New TableCell() cell.ColumnSpan = 1 item.Cells.Add(cell) cell.Text = "aaa" DataGrid1.Controls(0).Controls.AddAt(0, item) cell = New TableCell() cell.ColumnSpan = 2 item.Cells.Add(cell) cell.Text = "bbb" DataGrid1.Controls(0).Controls.AddAt(0, item) cell = New TableCell() cell.ColumnSpan = 2 item.Cells.Add(cell) cell.Text = "ccc" DataGrid1.Controls(0).Controls.AddAt(0, item) cell = New TableCell() cell.ColumnSpan = 1 item.Cells.Add(cell) cell.Text = "ddd" DataGrid1.Controls(0).Controls.AddAt(0, item) End If DataGrid1.Controls(0)はこのままでよかったのですね。 単にセル結合の記述を制御するだけでできました。 ホントよかったです。 最後にひとつだけ、この追加行でセル結合した項目を center位置に配置したのですが、可能でしょうか?? | ||||||||
|
投稿日時: 2005-09-15 23:22
考え方としては、以下のようになるはずです。
item = New DataGridItem(-1, -1, ListItemType.Header) cell = New TableCell() cell.ColumnSpan = 1 cell.Text = "aaa" item.Cells.Add(cell) cell = New TableCell() cell.ColumnSpan = 2 cell.Text = "bbb" item.Cells.Add(cell) cell = New TableCell() cell.ColumnSpan = 2 cell.Text = "ccc" item.Cells.Add(cell) cell = New TableCell() cell.ColumnSpan = 1 cell.Text = "ddd" item.Cells.Add(cell) DataGrid1.Controls(0).Controls.AddAt(0, item) >最後にひとつだけ、この追加行でセル結合した項目を >center位置に配置したのですが、可能でしょうか?? cell.Attributes["align"] = "center" でいけると思います。 | ||||||||
|
投稿日時: 2005-09-16 13:19
コード記述していただき感謝します。
CENTER位置については、 cell.Attributes.Add("ALIGN", "CENTER") で実現できました。 しかし項目にWIDTH指定を記述すると、CENTER位置に ならないケースがあります。 とにかく目的のヘッダ2行記述ができました。 いろいろお手数おかけしました。 あらためましてお礼申し上げます。 |