- PR -

DataGridでAlternatingBackColorが反映されない

1
投稿者投稿内容
みかん
常連さん
会議室デビュー日: 2003/12/13
投稿数: 42
投稿日時: 2006-05-07 14:10
VB2003Proを使用しています。
DataGridでAlternatingBackColorを指定し、
1行おきに色が変わるように設定したいのですが、うまくいきません。
DataGridTextBoxColumn の派生クラスを作成する必要があるのでしょうか?

現在は、Bottonのクリックイベントで以下のように設定しています。
データセット宣言 :Dim dataSet As DataSet = New DataSet
データテーブル宣言 :Dim MeisaiTbl As DataTable
テーブルスタイル宣言:Dim ts As New DataGridTableStyle
カラムスタイル宣言 :Dim Column1 As New DataGridTextBoxColumn
テーブルの作成 :MeisaiTbl = dataSet.Tables.Add("MEISAI")
AlternatingBackColorを設定
MeisaiTbl.Columns.Add("Column1", Type.GetType("System.String"))
データの作成、
テーブルスタイルのマッピング、
カラム毎に列幅の設定、
読み取り専用モードにする
DataGrid1 に設定を反映(DataGrid1.SetDataBinding)

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-05-07 14:32
引用:

みかんさんの書き込み (2006-05-07 14:10) より:

DataGridでAlternatingBackColorを指定し、
1行おきに色が変わるように設定したいのですが、うまくいきません。
DataGridTextBoxColumn の派生クラスを作成する必要があるのでしょうか?


そんなことはないです。

引用:

カラムスタイル宣言 :Dim Column1 As New DataGridTextBoxColumn


関係ないですが、これ無意味じゃないですか?

引用:

MeisaiTbl.Columns.Add("Column1", Type.GetType("System.String"))


使っていないようですから。

引用:

データの作成、
テーブルスタイルのマッピング、
カラム毎に列幅の設定、
読み取り専用モードにする
DataGrid1 に設定を反映(DataGrid1.SetDataBinding)


このあたりの具体的なソースを提示してください。

ミニマム コード的には、TableStyle の設定やカラムの列幅の設定、諸々は必要ないですよね?
このあたりで関係のないものを紐付けていませんか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-05-07 14:40
引用:

みかんさんの書き込み (2006-05-07 14:10) より:

テーブルの作成 :MeisaiTbl = dataSet.Tables.Add("MEISAI")
AlternatingBackColorを設定
MeisaiTbl.Columns.Add("Column1", Type.GetType("System.String"))


関係ないかもしれませんが...
タイミング的に AlternatingBackColor の設定はバインド直前が望ましいと思います。

コード:

    Dim oDataSet   As New System.Data.DataSet("名前")
    Dim oDataTable As System.Data.DataTable = oDataSet.Tables.Add("MEISAI")

    oDataTable.Columns.Add("Column1", GetType(System.String))

    oDataTable.Rows.Add("中博俊")
    oDataTable.Rows.Add("じゃんぬ")
    oDataTable.Rows.Add("Jitta")
    oDataTable.Rows.Add("trapemiya")
    oDataTable.Rows.Add("やねうらお")
    oDataTable.Rows.Add("επιστημη")

    Me.DataGrid1.AlternatingBackColor = System.Drawing.Color.Red
    Me.DataGrid1.SetDataBinding(oDataSet1, "MEISAI")


ミニマム コード的には、こんな感じではないでしょうか? (試していませんが)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
みかん
常連さん
会議室デビュー日: 2003/12/13
投稿数: 42
投稿日時: 2006-05-07 20:23
早速の返答有難うございます。

>このあたりで関係のないものを紐付けていませんか?
テーブルスタイルをtsとしているあたりが怪しいと思うのですが
どのように直すべきか現在確認中です。
因みに現在のコードは以下のようになっております。

コード: --------------------------------------------
Dim dataSet As DataSet = New DataSet
Dim MeisaiTbl As DataTable

'テーブルスタイル
Dim ts As New DataGridTableStyle

'カラムスタイル 1列目
Dim Column1 As New DataGridTextBoxColumn

'テーブルの作成
MeisaiTbl = dataSet.Tables.Add("MEISAI")
MeisaiTbl.Columns.Add("項目1", Type.GetType("System.UInt32"))

'データの作成
MeisaiTbl.Rows.Add(New Object() {1})
MeisaiTbl.Rows.Add(New Object() {2})
MeisaiTbl.Rows.Add(New Object() {3})

' テーブル・スタイルの作成
'テーブル名のセット
ts.MappingName = MeisaiTbl.TableName

'列ヘッダによるソートを禁止
ts.AllowSorting = False

'カラム・スタイルの作成
'カラムのマッピング
Column1.MappingName = MeisaiTbl.Columns(0).ColumnName

'列見出しのセット
Column1.HeaderText = "項目1"

'列幅の設定
Column1.Width = 50

'DataGrid1 の見出しを表示,非表示
DataGrid1.CaptionVisible = True

'レコードセレクタの幅を変更
DataGrid1.RowHeaderWidth = 10

'読み取り専用モードにする
DataGrid1.ReadOnly = True

'背景の色を変更
DataGrid1.BackgroundColor = System.Drawing.Color.Pink

'テーブルスタイル/カラムスタイルの適用
'テーブルスタイルを追加
DataGrid1.TableStyles.Add(ts)

'奇数行に色をつける
DataGrid1.AlternatingBackColor = System.Drawing.Color.Red

'DataGrid1 に設定を反映
DataGrid1.SetDataBinding(dataSet, MeisaiTbl.TableName)
--------------------------------------------

Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2006-05-07 20:32

TableStyles を使う場合、DataGridTableStyle.AlternatingBackColor を使ってください。
みかん
常連さん
会議室デビュー日: 2003/12/13
投稿数: 42
投稿日時: 2006-05-08 21:26
ts.AlternatingBackColor
とすることで解決できました。
有難うございました。
1

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