• 締切済み

DataGrid(DataSet?)で列幅調整

VB.NET 2002使用 フォーム上にDataGridコントロールを貼付け Form_Load()内に以下のように記述し、SQLを使用してデータを表示させるようにしていますが、 列幅がデフォルト?になっているようで変更ができません。 どのようなコードを記述すれば変更ができるのでしょうか。 MSDNやWEBサンプル(dobon.net)を参考にしてダメでした。 DataGridプロパティのDataGridTableStyleのコレクション内を色々さわってみてもダメ。 DataGridの設定・使用方をよく分かっていないのが問題なんだと思うのですが、「こういう記述をすればいい」というのがお分かりの方がいらっしゃいましたら教えてください。 <記述したコード(一部)> Public dst As New DataSet() Private Sub Form1_Load(省略) Handles MyBase.Load sql = "select 列1,列2 from テーブル" Dim myConnection ... Dim myCommand As New OleDb.OleDbDataAdapter(ssql, myConnection) dst.Clear() myCommand.Fill(dst) 'データセットにデータ取込み DataGrid1.DataSource = dst.Tables(0) 'DataGridにデータ取込み myCommand = Nothing myConnection.Close() 'データベース閉じる myConnection = Nothing Dim ts As New DataGridTableStyle() ts.MappingName = "DataTable1" 'サンプルからそのまま流用 Dim cs1 DataGridTextBoxColumn cs1 = New DataGridTextBoxColumn() cs1.MappingName="Column1" cs1.width = 200 ts.GridColumnStyles.Add(cs1) Dim cs2 DataGridTextBoxColumn cs2.MappingName="Column1" cs2 = New DataGridTextBoxColumn() cs2.width = 300 ts.GridColumnStyles.Add(cs2) DataGrid1.TableStyles.Add(ts) End sub

みんなの回答

  • ape5
  • ベストアンサー率57% (85/148)
回答No.2

もう少し必要なようでした。 下のようにしてみてください。 ------------------------------------------------------------- DataGrid1.DataSource = dst.Tables(0) 'DataGridにデータ取込み Dim myDGTableStyle As DataGridTableStyle = New DataGridTableStyle() myDGTableStyle.MappingName = dst.Tables(0).TableName DataGrid1.TableStyles.Add(myDGTableStyle) Dim sampleTableStyle As DataGridTableStyle sampleTableStyle = DataGrid1.TableStyles(0) sampleTableStyle.GridColumnStyles(0).Width = 20 sampleTableStyle.GridColumnStyles(1).Width = 10 sampleTableStyle.GridColumnStyles(2).Width = 100

全文を見る
すると、全ての回答が全文表示されます。
  • ape5
  • ベストアンサー率57% (85/148)
回答No.1

以下のようにやるとできるようです。 コツとしては、先にDataGridにデータを取り込んでおいてそのあとに操作をするといいようです。 ----------------------------------------------------------- DataGrid1.DataSource = dst.Tables(0) 'DataGridにデータ取込み Dim sampleTableStyle As DataGridTableStyle sampleTableStyle = DataGrid1.TableStyles(0) sampleTableStyle.GridColumnStyles(0).Width = 20 sampleTableStyle.GridColumnStyles(1).Width = 10 sampleTableStyle.GridColumnStyles(2).Width = 100

a-k-a
質問者

お礼

ありがとうございます。 ご紹介していただきました方法を試して見ましたが、変化はありませんでした。 参考になるWEBサイト、書籍がありましたら教えてください。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • DataGridの使用方法を教えてください

    VB.NET2002で表形式で表示(参照のみ)させたいのですが,FlexGridはないようでDATAGridを使用するように書いてありましたが, DATAGridの使用方法がよく分かりません. どのような手順をふんでコードを記述するのか教えてください. 1,フォームにDATAGrid1を貼り付け. (ボタンも貼り付け,ボタンクリックでSQL実行,表示のイメージ) 2,Btn1_Clickに以下コード記述.色々参考にしていたらよく分からない状態になってしまいました... Q.フォームのプロパティでのデザインは必須なんでしょうか? Dim myConnection As New System.Data.OleDb.OleDbConnection(sConnectionString) Dim myCommand As New OleDb.OleDbCommand _ ("select * from データ", myConnection) Dim myReader As OleDb.OleDbDataReader Dim dst As New DataSet("Table") 'DataTable("DataTable") dst.Tables.Add(New DataTable("dst")) Dim dc As DataColumn myConnection.Open() myReader = myCommand.ExecuteReader 'データの読み込み While (myReader.Read) DataGrid1.DataSource = myReader.GetValue(0) End While DataGrid1.SetDataBinding(dst, "dst") myConnection.Close() myConnection = Nothing myReader.Close() myReader = Nothing myCommand = Nothing myConnection.Close() 'データベース閉じる myConnection = Nothing

  • ASP.NET DataGridのハイパーリンク

    以下のようにASP.NETにて、DataGridへデータをセットし表示したのですが、さらにヘッダーの項目名(名前、年齢)をハイパーリンクにし、クリックして別の詳細ページへ飛ぶなどの動作をさせたいと考えています。 いろいろ調べましたが、記述方法がわかりません。 どなたかアドバイスお願いします。 ---------------------------------------------------- Private Sub Page_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) ' DataGridへバインドする If Not Me.IsPostBack Then ' 独自のDataAdapterを作成する Dim da As New SqlDataAdapter( _ "SELECT fullname as 名前, age as 年齢 FROM person", _ Me.SqlConnection1) Dim ds As New DataSet ' データ検索 da.Fill(ds) ' DataGridへバインド Me.DataView1 = New DataView(ds.Tables(0)) Me.DataBind() End If End Sub

  • VB2008・DataGridの表示について

    フォーム上にDataGridを設置してsqlcompactで作られたテーブルのデータを表示しようとして 以下のソースを実行すると、エラーになり表示できませんでした。 もし、原因がわかるかたがいらっしゃいましたら教えてくださると助かります。 表示するにあたり、テーブルの特定のカラムだけ表示して、ヘッダーを編集したい。 テーブルの全レコードではなくて対象レコードのみを表示 Dim cn As New System.Data.SqlServerCe.SqlCeConnection Dim SQL As System.Data.SqlServerCe.SqlCeCommand Dim db_sql As String ' テーブルスタイルを生成する Dim dgStyle As DataGridTableStyle = New DataGridTableStyle() dgStyle.MappingName = "表示用テーブル" ' 列スタイルを生成し、プロパティを設定する Dim col(4) As DataGridTextBoxColumn col(0) = New DataGridTextBoxColumn() col(0).HeaderText = "商品コード" col(0).MappingName = "商品コード" col(0).Width = 50 col(1) = New DataGridTextBoxColumn() col(1).HeaderText = "商品名" col(1).MappingName = "商品名" col(1).Width = 100 ' 列スタイルをテーブルスタイルに追加する dgStyle.GridColumnStyles.Add(col(0)) dgStyle.GridColumnStyles.Add(col(1)) ' テーブルスタイルをグリッドに追加する Me.DataGrid_Display.TableStyles.Clear() Me.DataGrid_Display.TableStyles.Add(dgStyle) 'DBのパスをセットしてオブジェクト化 cn.ConnectionString = "Data Source=" & DB_PATH & ";Password=" & DB_PASSWORD & ";Persist Security Info=True;" SQL = cn.CreateCommand 'データグリッドを表示する Dim dbadp As System.Data.SqlServerCe.SqlCeDataAdapter Dim dbtabl As DataTable Dim aa As DataSet db_sql = "SELECT syohinno, syohinryaku, suryo1, suryo2, suryo3 FROM porsj05_tempo ORDER BY date DESC" dbadp = New SqlCeDataAdapter(db_sql, cn) dbtabl = New DataTable dbtabl.Locale = System.Globalization.CultureInfo.InvariantCulture dbadp.Fill(dbtabl) Me.DataGrid_Display.DataSource = dbadp Me.DataGrid_Display.Refresh() エラー箇所 Me.DataGrid_Display.DataSource = dbadp エラー内容 Complex DataBinding は IList または IListSource のどちらかをデータソースとして受け入れます。 'System.ArgumentException' の初回例外が System.Windows.Forms.dll で発生しました。

  • DataGridでエラーになる

    こんにちわ。 現在「Microsoft Visual Basic 2008 Express Edition」と「Microsoft SQL Server 2005」で開発を始めた初心者です。 テーブルの指定範囲のレコードをDataGridに表示したいため、ホームページのサンプルを参考にコーディングしたのですが、 エラーとなってしまいます。 フォームには、ツールボックスから「DataGridView」をドラックして貼り付けてあります。 どうすれば動きますでしょうか?ご教授お願いします。 <エラーの内容> 「'TableStyles'は'System.Windows.Forms.DataGridView'のメンバではありません。」 <参考ホームページ> http://park5.wakwak.com/~weblab/selectRange.html ---------------------------------------------------------------- Imports TESTPG.DbUtil Imports System.Data.OleDb Public Class frm社員マスタ一覧 Inherits System.Windows.Forms.Form Private Sub BTN_検索ボタン_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_検索ボタン.Click '------------------------------------------- ' レコードを取得し、データグリッドに表示する '------------------------------------------- Try 'テーブルスタイルを生成する Dim ts As New DataGridTableStyle() 'マップ名を指定する ts.MappingName = "社員テーブル" '新しい列スタイルの作成 Dim cs(2) As DataGridTextBoxColumn cs(2) = New DataGridTextBoxColumn() 'マップ名を指定する cs(2).MappingName = "Column1" '列ヘッダに表示される文字列 '1列目:社員コード cs(0) = New DataGridTextBoxColumn() cs(0).HeaderText = "コード" cs(0).MappingName = "社員コード" cs(0).Width = 40 cs(0).Alignment = HorizontalAlignment.Center '2列目:社員氏名 cs(1) = New DataGridTextBoxColumn() cs(1).HeaderText = "社員氏名" cs(1).MappingName = "社員氏名" cs(1).Width = 90 cs(1).Alignment = HorizontalAlignment.Left '3列目:社員カナ名 cs(2) = New DataGridTextBoxColumn() cs(2).HeaderText = "社員カナ名" cs(2).MappingName = "社員カナ" cs(2).Width = 130 cs(2).Alignment = HorizontalAlignment.Left '列スタイルをテーブルスタイルに追加する ts.GridColumnStyles.AddRange(cs) 'テーブルスタイルをグリッドに追加する dgrSyain.TableStyles.Clear() ← ここでエラー dgrSyain.TableStyles.Add(ts) ← ここでエラー '************************************* 'SQL文の設定 'データを取得する 'データをバインドする '************************************* Catch oExcept As Exception '例外が発生した時の処理 MessageBox.Show(oExcept.ToString, "例外発生") End Try End Sub End Class

  • DataGridのFont

    VB.Net2003 の初心者です。 DataGridの指定セルのFontを変更することはできないのでしょうか? Dim tblStyle As DataGridTableStyle Dim clmStyle As DataGridTextBoxColumn clmStyle = New TestDataGrid tblStyle.GridColumnStyles.Add(clmStyle) With clmStyle   .MappingName = "Test"   .Width = 45   .NullText = Nothing   .Alignment = HorizontalAlignment.Right   .Format = "0.0" .TextBox.Font.Bold = True  End With と書いた場合「プロパティ 'Bold' は 'ReadOnly' です。」というエラーになってしまいます。なにか良い方法をご存知の方がいらっしゃいましたら教えていただけないでしょうか。

  • VB2008の文字列のエンコードについて

    環境:VB 2008 ExpressEdition SP1 データベース:MySQL5.0 上記の環境にて、カラムから文字列を取得しようとしているのですが 元々サーバー側のエンコードが今回作るアプリ専用に設計された訳ではなく、PHP等での閲覧に対応する為ににキャラクタセットをUTF-8で設計、運用しています。 ODBC3.51を用いて、データベースに接続しデータを取得しようとしているのですが、取得したデータが文字化けを起こしてしまいます。 Debug.Print(hoge)で出る、デバッグの文字列が ???? ?? となってしまいます。 文字列をエンコードする為の手立てをお教え願えませんでしょうか。 よろしくお願いいたします。 'SQLの設定 strsql = "SELECT * FROM HOGE" MyConnection.Open() Dim MyCommand As New OdbcCommand MyCommand.Connection = MyConnection MyCommand.CommandText = strsql Dim MyDataReader As OdbcDataReader MyDataReader = MyCommand.ExecuteReader While MyDataReader.Read() Debug.Print(CStr(MyDataReader("hoge"))) End While

  • 【ASP.NET】DataSetをSqlDataSourceに組み込めますか?

    ASP.NET Visual Studio 2005で開発を行っています。 GridViewのページングの機能を使用するには、「SqlDataSource」や「ObjectDataSource」を使用しないと有効にならないと思いますが、データベースがDataSetになっています。 この状態から、GridViewにデータをバインドし、ページングを有効にさせるには、どうしたらよいでしょうか?? SqlDataSourceにDataSetを持っていくという方法が調べても、分かりませんでした。 以下が使用しているソースです。 これですと、ページングが有効にならず、エラーになる状態です。 ============================================= Dim dSet As Data.DataSet = New Data.DataSet("データ") Dim dTbl As Data.DataTable Dim dRow As Data.DataRow dTbl = dSet.Tables.Add("データ") dTbl.Columns.Add("aaa", Type.GetType("System.String")) dRow = dTbl.NewRow() dRow("aaa") = "bbb" dTbl.Rows.Add(dRow) Me.GridView1.DataSource = dTbl Me.GridView1.DataBind() ====================================== どうぞ、宜しくお願いします。

  • VB.NET2003のDataGridでコンボボックス

    こんにちは。 最近VB.NET(2003)を始めたばかりの初心者です。 DataGridにコンボボックスを作成する方法を探してまして、 http://dobon.net/vb/dotnet/datagrid/datagridcombobox.html に書いてあるようにDataGridTextBoxColumnクラスからの派生クラスを作成して呼び出してみました。 そうしたところ、コンボボックスが表示され、データのセットもきちんとできました。 しかし、そのコンボボックスで選択している値を取得する方法がわからなく困ってます。 たとえば Dim comboSorce As New DataTable("ComboBox") comboSorce.Columns.Add("DisplayMember", GetType(String)) comboSorce.Columns.Add("ValueMember", GetType(Integer)) comboSorce.Rows.Add(New Object() {"OK", 0}) comboSorce.Rows.Add(New Object() {"NG", 1}) というデータをコンボボックスにセットした場合 OK,NGという表示上の値は CStr(DataGrid1(row,col)) で取得できますが、実際の値を取得する方法がわかりません。 ご存知の方いらっしゃいましたら、ご教授ください。 それと、行毎に違う値(リストデータ)のコンボボックスを作成することはできますでしょうか? 以上です。よろしくお願いします。

  • フィールド名が取得したい

    VB.NET2002をしようしています. ADO?(Dim myConnection As New System.Data.OleDb.OleDbConnection と定義)をしようした場合フィールド名はどのように記述すれば取得できるのでしょうか? OO4Oの場合ですと「dataset(column_no).Name」とすればできたと思うのですが,ADOには「.NAME」の修飾子がありませんでした. それに変わるものは何になるのでしょうか?

  • DataSetについて

    下記のようなDataSetを使用した処理質問致します。 TableAdapterのデザイン時にてSELECTCommandで SELECT 'AA' AS 名前 FROM M_マスタ と、記述してDataGridView1に反映しようとしても実際にテーブルに入っているデータがそのまま表示されてしまいます。 このように固定の値を取得する方法はどのようにしたらよろしいのでしょうか?そもそもできないのでしょうか? Dim ds As New DataSet1 Dim Ta As New DataSet1TableAdapters.M_マスタTableAdapter 'テーブルアダプタを利用してデータを読み込む Ta.Fill(ds.M_マスタ) Me.DataGridView1.DataSource = ds Me.DataGridView1.DataMember = "M_マスタ"