初心者な質問で恐縮ですが、
VB.NETでDATAGRIDコントロールのカラム毎のセル幅を変えるには、
何と言うクラスの「WIDTH」を設定すればよいのでしょうか??
DBとのバインドはうまくいって、値の表示はうまくいってるの
ですが、デフォルトのセルの幅が狭く一覧表示できません。
カラム毎のセルの幅は変えられないのでしょうか??
「デザインビュー」で「TableStyles」コレクションを
設定すればよいのかと思い、試してみたのですが、
全然変わりませんでした。(^^;)
もしお分かりの方いらっしゃいましたら、
ご教授をお願いいたします。
はじめて書き込みます。
ドットネットはじめちゃんです。
私も始めてまだ4ヶ月めです。
別のサイトでかなり勉強しました。いまも勉強中ですが・・・
質問の回答ですが、列を自分でグリッドに追加すれば、列毎に変更できます。
列をたくさん作る場合は少し大変ですが、参考までにどうぞ。
Public grdスタイル As DataGridTableStyle
Public grdカラム As DataGridColumnStyle
grdスタイル = New DataGridTableStyle()
With grdスタイル
.MappingName = "テーブル名"
'1列目
grdカラム = New DataGridTextBoxColumn()
grdカラム.Alignment = HorizontalAlignment.Left
grdカラム.MappingName = "項目1"
grdカラム.HeaderText = "1"
grdカラム.Width = 50
grdカラム.NullText = "(なし)"
.GridColumnStyles.Add(grdカラム)
'2列目
grdカラム = New DataGridTextBoxColumn()
grdカラム.Alignment = HorizontalAlignment.Left
grdカラム.MappingName = "項目2"
grdカラム.HeaderText = "2"
grdカラム.Width = 100
grdカラム.NullText = "(なし)"
.GridColumnStyles.Add(grdカラム)
End With
Me.grd一覧.TableStyles.Add(grdスタイル)
返事が遅れてしまってすみません。
「ドットネットはじめちゃん 」さん、ご回答誠にありがとう
ございます。
ご教授くださった方法のスタイルを下記のような
DataGrid1.SetDataBinding(objDS, "テーブル名")
方法でDataGridと連結する事が出来ました。
ちょっと、残念なのは、
「DataAdapter」から作成した「DataSet」を使用しての
DataGridとの「SetDataBinding」ではうまく出来ませんでした。
私が読んだ資料だと下記のような記述でGRIDとの連結が可能だと
なっていたので、それを使用していたのですが、
Dim objDA As OleDb.OleDbDataAdapter
Dim objDS As New Data.DataSet()
strSQL = "SELECT ・・・"
objDA = New OleDb.OleDbDataAdapter(strSQL, strCON)
Call objDA.Fill(objDS)
grd_Member.SetDataBinding(objDS.Tables(0), Nothing)
上記では、"テーブル名"のところに「Nothing」指定を必要と
するので、変更出来ませんでした。
下記の方法でスタイルが変更できればスマートだと思ったのですが、
とりあえず、上記の方法で作成していきます。
ご教授くださいまして、誠にありがとうございました。
前回の記述で設定に漏れがあったのですが、
Me.DataGrid1.DataSource = AKPGP000.DataSet1
Me.DataGrid1.DataMember = ("テーブル名")
が必要でした。
これで「DataAdapter」から作成した「DataSet」の連結ができると
思うのですが。
・・・検討違いのことかいてたら御免なさい。
矢継ぎ早に質問してしまってすみません。
grd_Member.SetDataBinding(objDS.Tables(0), Nothing)
の後にお教えくださいました記述をしてみたのですが、DataMemberに「テーブル名」を設定すると、下のようなエラーが出てしまいした。
「フィールド テーブル名 の子リストを作成できません。」
何か設定が足りないのでしょうか??
少しやってみたのですが、かぐらさんのようなエラーがでませんでした。
私もまだまだ未熟なもので、わかりません・・・
grd_Member.SetDataBinding(objDS.Tables(0), Nothing)
をコメントにしても動きませんか?
どなたか補足お願いします。
「ドットネットはじめちゃん」さん、どうもお手数をおかけします。
私は本当に未熟なもので、エラーの原因がよくわかりません。
「SetDataBinding」の行
を、
Me.DataGrid1.DataSource = DataSet1
Me.DataGrid1.DataMember = ("テーブル名")
に変えたのですが、
そうすると、今まで表示されていたカラム名、データが消えてしまいました。
それから、左上の方に+印が表示されております。
とりあえず、
1.「DataGridTableStyle」クラスの設定
2.「DataSet」クラスのインスタンスの作成
3.「DataTable」クラスのインスタンスの作成
4.「DataTable」クラスのカラムの作成
5.「DataTable」クラスへの値の設定
6.「DataTable」クラスを「DataSet」クラスへ設定
7.「DataGrid」への「DataSet」のバインド処理(SetDataBindingを使用)
※ DataMemberには、「DataGridTableStyle」クラスの「MappingName」と、
「DataTable」クラスのテーブル名と、「DataGrid」の「DataMeber」は同じ値を
設定しました。
以上の手順では、GRIDのカラムサイズの変更は可能となりました。
ちょっと、残念ではありますが、その上記の処理にてカラムの変更いたします。
相談にのって頂き、誠にありがとうございました。
ツイート | ![]() |