VB.NETでDATAGRIDコントロールのセル毎の幅を変えるには??

解決


かぐら  2003-04-18 22:46:12  No: 106758

初心者な質問で恐縮ですが、
VB.NETでDATAGRIDコントロールのカラム毎のセル幅を変えるには、
何と言うクラスの「WIDTH」を設定すればよいのでしょうか??

DBとのバインドはうまくいって、値の表示はうまくいってるの
ですが、デフォルトのセルの幅が狭く一覧表示できません。
カラム毎のセルの幅は変えられないのでしょうか??

「デザインビュー」で「TableStyles」コレクションを
設定すればよいのかと思い、試してみたのですが、
全然変わりませんでした。(^^;)

もしお分かりの方いらっしゃいましたら、
ご教授をお願いいたします。


ドットネットはじめちゃん  2003-04-19 00:35:31  No: 106759

はじめて書き込みます。 
ドットネットはじめちゃんです。
私も始めてまだ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スタイル)


かぐら  2003-04-21 20:12:12  No: 106760

返事が遅れてしまってすみません。
「ドットネットはじめちゃん 」さん、ご回答誠にありがとう
ございます。

ご教授くださった方法のスタイルを下記のような

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」指定を必要と
するので、変更出来ませんでした。

下記の方法でスタイルが変更できればスマートだと思ったのですが、
とりあえず、上記の方法で作成していきます。
ご教授くださいまして、誠にありがとうございました。


ドットネットはじめちゃん  2003-04-21 22:56:02  No: 106761

前回の記述で設定に漏れがあったのですが、

 Me.DataGrid1.DataSource = AKPGP000.DataSet1
 Me.DataGrid1.DataMember = ("テーブル名")

が必要でした。
これで「DataAdapter」から作成した「DataSet」の連結ができると
思うのですが。
・・・検討違いのことかいてたら御免なさい。


かぐら  2003-04-22 01:34:54  No: 106762

矢継ぎ早に質問してしまってすみません。

grd_Member.SetDataBinding(objDS.Tables(0), Nothing)

の後にお教えくださいました記述をしてみたのですが、DataMemberに「テーブル名」を設定すると、下のようなエラーが出てしまいした。

「フィールド テーブル名 の子リストを作成できません。」

何か設定が足りないのでしょうか??


ドットネットはじめちゃん  2003-04-22 02:32:53  No: 106763

少しやってみたのですが、かぐらさんのようなエラーがでませんでした。

私もまだまだ未熟なもので、わかりません・・・

grd_Member.SetDataBinding(objDS.Tables(0), Nothing)

をコメントにしても動きませんか?

どなたか補足お願いします。


かぐら  2003-04-22 03:47:56  No: 106764

「ドットネットはじめちゃん」さん、どうもお手数をおかけします。
私は本当に未熟なもので、エラーの原因がよくわかりません。

「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のカラムサイズの変更は可能となりました。
ちょっと、残念ではありますが、その上記の処理にてカラムの変更いたします。
相談にのって頂き、誠にありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加