- PR -

DataGridのヘッダを2行にする方法

投稿者投稿内容
ねっとふぁん
会議室デビュー日: 2005/09/09
投稿数: 5
投稿日時: 2005-09-09 15:01
 IIS+ODP.NET+MS VS2003でWEBアプリを開発しています。
本サイトの.NET TIPSにありましたが、サンプルとしては
確認できましたが、その応用で苦戦しています。
実際の開発ではDataGridのヘッダを以下の形にしたいのですが、
どうかご教授ください。
+--------------------------------+
|aaaaa|bbbbbbbbbb|ccccccccc|ddddd|
+aaaaa+-----+----+----+----+-----+
|aaaaa|eeeee|ffff|gggg|hhhh|iiiii|
+--------------------------------+
画面くずれを防ぐため文字埋めしています。
真ん中2項目がcolspan=2です。


<font face="MS ゴシック" size=-1>[ メッセージ編集済み 編集者: ねっとふぁん 編集日時 2005-09-09 15:05 ]</font>

[ メッセージ編集済み 編集者: ねっとふぁん 編集日時 2005-09-09 15:10 ]

[ メッセージ編集済み 編集者: ねっとふぁん 編集日時 2005-09-09 15:13 ]
葉瀬崎浩樹
大ベテラン
会議室デビュー日: 2005/06/28
投稿数: 115
お住まい・勤務地: 兵庫県
投稿日時: 2005-09-09 16:02
引用:
画面くずれを防ぐため文字埋めしています。


コード:
+--------------------------------+ 
|aaaaa|bbbbbbbbbb|ccccccccc|ddddd| 
+aaaaa+-----+----+----+----+-----+ 
|aaaaa|eeeee|ffff|gggg|hhhh|iiiii| 
+--------------------------------+ 



お手伝い@ひまじん
trapemiya
大ベテラン
会議室デビュー日: 2005/07/30
投稿数: 102
投稿日時: 2005-09-11 00:44
考え方だけいいますね。
まず、オリジナルのヘッダの1列目を削除する必要があります。
((DataGridItem)DataGrid1.Controls[0].Controls[0]).Cells.RemoveAt(0);
でできます。
追加するヘッダの1列目にrowspan=2を入れてあげます。

これでたぶんできると思います。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2005-09-11 05:58
引用:

本サイトの.NET TIPSにありましたが、サンプルとしては
確認できましたが、その応用で苦戦しています。
実際の開発ではDataGridのヘッダを以下の形にしたいのですが、
どうかご教授ください。



DataGridItemを作成してDataGridのヘッダーに追加するようにしてはどうでしょうか。

コード:
    Sub DataGrid1_ItemCreated(sender As Object, e As DataGridItemEventArgs)
      If e.Item.ItemType = ListItemType.Header Then
        Dim item As DataGridItem
        Dim cell As TableCell
        item = New DataGridItem(0, 0, ListItemType.Header)
        cell = New TableCell()
        cell.ColumnSpan =  2
        item.Cells.Add(cell)
        cell.Text = "List of Products"
        DataGrid1.Controls(0).Controls.AddAt(0, item)
      End If
    End Sub



サンプルを作成しましたので参考にしてください。

http://www.friendlysw.com/aspnet/articles/app/031003-1.aspx

_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2005-09-11 06:04
DataGridにサブヘッダーを作成することも可能です。

http://www.friendlysw.com/aspnet/articles/app/031003-2.aspx

_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
ねっとふぁん
会議室デビュー日: 2005/09/09
投稿数: 5
投稿日時: 2005-09-14 11:54
報告が遅れましてすいません。
サブヘッダでためしましたが、次のカラムの指定がわかりません。
エラーになりました。
記述内容

If e.Item.ItemType = ListItemType.Footer Then
item = New DataGridItem(0, 0, ListItemType.Header)
cell = New TableCell()
cell.ColumnSpan = 2
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(1).Controls.AddAt(0, item)

cell = New TableCell()
cell.ColumnSpan = 2
item.Cells.Add(cell)
cell.Text = "ccc"
DataGrid1.Controls(2).Controls.AddAt(0, item)

End If
End Sub

先頭行だけなので単純にカラム位置(Controlsの箇所)
だけではうまくいかないようです。
それともセルの設定でしょうか??
trapemiya
大ベテラン
会議室デビュー日: 2005/07/30
投稿数: 102
投稿日時: 2005-09-14 12:13
[ASP.NET]DataGridコントロールのヘッダーを複数行にするには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/095multiheader/multiheader.html
によれば、DataGridTableは、MyGrid.Controls[0]になりますから、
サブヘッダであろうとこれは変わりません。
サブヘッダを何行目に挿入するかは、
DataGrid1.Controls(0).Controls.AddAt(0, item)
AddAt(0, item)
の0をいじることになります。
ねっとふぁん
会議室デビュー日: 2005/09/09
投稿数: 5
投稿日時: 2005-09-14 13:46
ヘッダ部のみ単純に2行にしたいだけで、サブヘッダを行途中に挿入する
必要性はありません。列をセル結合のするだけなのですが、
カラム指定が理解できず苦戦してます。
サンプルが1カラムのみ結合してますが複数カラムの指定の
場合はどうなるのでしょうか?
Controlsの数値だけではない?


スキルアップ/キャリアアップ(JOB@IT)