VB.NETのDataGridにて
1レコードを複数行で表示することは可能ですか?
|COL1|COL2|COL3|COL4|COL5|COL6|
というレコードを
|COL1|COL2|COL3|
|COL4|COL5|COL6|
にしたいということですか?
ファリンファリンさんその通りです。
1レコード1行ではなく、1レコード2行で表示。
−−−−−−−−−
| |COL1|COL2|COL3|
|→|−−|−−|−−|1件目のデータ(1レコード2行)
| |COL4|COL5|COL6|
−−−−−−−−−
| |COL1|COL2|COL3|
| |−−|−−|−−|2件目のデータ(1レコード2行)
| |COL4|COL5|COL6|
−−−−−−−−−
欲をいえばエクセルのように1列目を結合して表示。
−−−−−−−−−
| | |COL2|COL3|
|→|COL1|−−|−−|1件目のデータ
| | |COL4|COL5|
−−−−−−−−−
| | |COL2|COL3|
| |COL1|−−|−−|2件目のデータ
| | |COL4|COL5|
−−−−−−−−−
無理でしょうか?
そもそも…グリッドとかは、指定したものを表示するだけなんだから、
表示するように指定するものを加工すればいいのでない?。
条件はデータグリッドを使用することのみ?
DataSource には何を指定してもいいの?
DataTable を自作するか、そこから DataView を生成して加工するのはどう?
>そもそも…グリッドとかは、指定したものを表示するだけなんだから、
>表示するように指定するものを加工すればいいのでない?。
特攻隊長まるるうさんと同意見です。
DataGridの基本機能はDateTableの内容を表示するだけのビュワー見たいなもの。
(DataGridTableStyleを制御しなければ編集・追加・削除もできますが。。)
とすれば、表示しようとしているテーブル等のデータ構造そのものを変えるしかないようですよね。
セルのマージについてはすみません。私はわかりません。
>セルのマージ
VB6.0 でなら MSHFlexGrid で MergeCells を調整して実現させたことはあります。
ただ、汎用化しようとしてごちゃごちゃになってそれっきりですね(汗)。
…そこまでするなら Excel 自体を使って表示した方が早いですので。
WebBrowser を使って表示する方法もマイクロソフトサポート技術情報に
公開されてますし。
DataGrid で、1レコードのデータソースを
複数行で表示することは可能です。
DataGrid.DataBind() メソッド実行に発生する
ItemDataBoundのイベントで動的に行を追加します。
Public Sub MyGrid_OnItemDataBound( _
ByVal sender As Object, ByVal e As DataGridItemEventArgs)
Dim r As New DataGridItem(-1, -1, e.Item.ItemType)
e.Item.Cells(0).RowSpan = 2
e.Item.Cells(4).ColumnSpan = 3
r.Cells.Add(e.Item.Cells(4))
Me.MyGrid.Controls(0).Controls.Add(r)
End Sub
結果は以下のようになると思います。
---------------------------------------------------
| dt.Item(1) | dt.Item(2) | dt.Item(3)
dt.Item(0) |---------------------------------------
| dt.Item(4)
---------------------------------------------------
| 列(1)の値 | 列(2)の値 | 列(3)の値
列(0)の値 |---------------------------------------
| 列(4)の値
---------------------------------------------------
・
・
・
ちなみにデザイン画面の
DataGridの項目は横一列になっています。
----------------------------------------------------------------
dt.Item(0) | dt.Item(1) | dt.Item(2) | dt.Item(3) | dt.Item(4)
----------------------------------------------------------------