データグリッドで1レコード複数行表示は可能?


レコード  2004-03-17 00:24:01  No: 112393  IP: [192.*.*.*]

VB.NETのDataGridにて
1レコードを複数行で表示することは可能ですか?

編集 削除
ファリンファリン  2004-03-17 20:05:46  No: 112394  IP: [192.*.*.*]

|COL1|COL2|COL3|COL4|COL5|COL6|
というレコードを
|COL1|COL2|COL3|
|COL4|COL5|COL6|
にしたいということですか?

編集 削除
レコード  2004-03-18 01:13:47  No: 112395  IP: [192.*.*.*]

ファリンファリンさんその通りです。
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|
 −−−−−−−−−

無理でしょうか?

編集 削除
特攻隊長まるるう  2004-03-18 08:58:36  No: 112396  IP: [192.*.*.*]

そもそも…グリッドとかは、指定したものを表示するだけなんだから、
表示するように指定するものを加工すればいいのでない?。

条件はデータグリッドを使用することのみ?
DataSource には何を指定してもいいの?
DataTable を自作するか、そこから DataView を生成して加工するのはどう?

編集 削除
ファリンファリン  2004-03-18 12:49:42  No: 112397  IP: [192.*.*.*]

>そもそも…グリッドとかは、指定したものを表示するだけなんだから、
>表示するように指定するものを加工すればいいのでない?。
特攻隊長まるるうさんと同意見です。
DataGridの基本機能はDateTableの内容を表示するだけのビュワー見たいなもの。
(DataGridTableStyleを制御しなければ編集・追加・削除もできますが。。)
とすれば、表示しようとしているテーブル等のデータ構造そのものを変えるしかないようですよね。
セルのマージについてはすみません。私はわかりません。

編集 削除
特攻隊長まるるう  2004-03-18 13:17:15  No: 112398  IP: [192.*.*.*]

>セルのマージ
VB6.0 でなら MSHFlexGrid で MergeCells を調整して実現させたことはあります。
ただ、汎用化しようとしてごちゃごちゃになってそれっきりですね(汗)。
…そこまでするなら Excel 自体を使って表示した方が早いですので。
WebBrowser を使って表示する方法もマイクロソフトサポート技術情報に
公開されてますし。

編集 削除
ブラック無糖  2005-05-09 22:45:02  No: 112399  IP: [192.*.*.*]

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)  
----------------------------------------------------------------

編集 削除