- - PR -
DataGridのカラム結合
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-05-19 12:21
DataGridで
HTMLで言う、colspan="2"などのようなカラムの結合をしたいのですが どうしたら出来ますか? よきアドバイスをお願いします。 | ||||
|
投稿日時: 2003-05-19 14:54
同様の件で私も悩みました。
「DataGridで1レコードを複数行で表示したい」 ↑スレッドで回答して頂きましたので、ご参考にされては いかがでしょうか? | ||||
|
投稿日時: 2003-05-19 17:12
せんべいです
なんかややこしいことされてますが・・・ 私は以下のようにしています。 たとえば、 --------------------- | @ | A | B | C | --------------------- と、四つのセルからなる表(DataGrid)があったとします。 このセルの、@とAに同じデータが(Text)入っているので これを連結して一つのセルにしたい!とします。そんなとき どうするのか?私はこうします。 1.そのままDataSourceをくっつけて、DataBind()する。 2.セルを一つ一つ見て、同じデータがあるかどうか見ていきます。 3.上の例で@とAが同じで、Bが違うてきすとの場合、A.Remove()として・・・ 4.@.ColumnSpan = 2とする。 ってな感じです。もちろん、Bまで同じTextならば、BもRemove()して @.ColumnSpan = 3とするわけです。 表が大きくなったら、それだけ処理がいるので、遅くなるんですけどね。 ではでは・・・ [ メッセージ編集済み 編集者: せんべい 編集日時 2003-05-19 17:13 ] | ||||
|
投稿日時: 2003-05-19 18:51
下記の様にしたのですが、余分なセル(ヘッダーセルの2〜7番目)が削除されません。
ColSpanは出来ているようです。 Removeというメソッドはないようなので、プロパティのEnabledを使用しましたが 余分なセルは削除できませんでした。 何が悪いのでしょうか?ご指摘お願いします。 Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound If e.Item.ItemType = ListItemType.Header Then e.Item.Cells(1).ColumnSpan = 7 e.Item.Cells(2).Enabled = True e.Item.Cells(3).Enabled = True e.Item.Cells(4).Enabled = True e.Item.Cells(5).Enabled = True e.Item.Cells(6).Enabled = True e.Item.Cells(7).Enabled = True End If end Sub
| ||||
|
投稿日時: 2003-05-20 09:37
せんべいです
すみません。間違えていました。 消すのは、Remove()ではなくてRemoveAt(i)でした。(iはカラム番号) しかも、DataGridItemオブジェクトのCellsプロパティで TableCellCollectionオブジェクトを取得し、そのTableCellCollectionオブジェクト のRemoveAt(i)メソッドです。ですから、昨日の順番と内容は変わって、 1.そのままDataSourceをくっつけて、DataBind()する。 2.セルを一つ一つ見て、同じデータがあるかどうか見ていきます。 3.上の例で@とAが同じで、Bが違うてきすとの場合、 (@ABのある行のDataGridItemオブジェクト).Cells.RemoveAt(1)として・・・ 4.@.ColumnSpan = 2とする。 ですね。ごめんなさい。 一回試してみてください。 [ メッセージ編集済み 編集者: せんべい 編集日時 2003-05-20 09:41 ] [ メッセージ編集済み 編集者: せんべい 編集日時 2003-05-20 09:42 ] | ||||
|
投稿日時: 2003-05-20 10:57
下記の方法で解決できました。
ありがとうございました。 本当に助かりました。 Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound If e.Item.ItemType = ListItemType.Header Then e.Item.Cells.RemoveAt(2) e.Item.Cells.RemoveAt(2) e.Item.Cells.RemoveAt(2) e.Item.Cells.RemoveAt(2) e.Item.Cells.RemoveAt(2) e.Item.Cells.RemoveAt(2) e.Item.Cells(1).ColumnSpan = 7 e.Item.Cells(1).Text = "<TABLE cellpadding=0 cellspacing=0 width=322px border=1><TR><TD align=center colspan=7>Daily Report</TD></TR><TR><TD align=center>1</TD><TD align=center>2</TD><TD align=center>3</TD><TD align=center>4</TD><TD align=center>5</TD><TD align=center>6</TD><TD align=center>7</TD></TR></TABLE>" End If End Sub
|
1