月曜日, 7月 28, 2008
[VB2005]DataGrid関連
▼質問
DataGridを追加すると紺色の帯が上の部分に表示されるんだけど?!
これは何?消せないの?
▼回答
グリッドの上部に表示できるキャプション(=タイトル)だよ。
消し方は、プロパティの「CaptionVisible 」を「False」に設定するか、次のコードを書くかどちらかだね!
Me.DataGrid1.CaptionVisible = False
▼質問
タイトルを表示したいんだけど・・・サンプルはないかな?
▼回答
とりあえず、次に示しておくから参考にしてくれ!
Dim objDataSet As New DataSet
Dim objDataTable As DataTable = New DataTable("objDataTable")
DataGrid1.TableStyles.Clear()
DataGrid1.DataSource = Nothing
Dim strName() As String = {"タイトル1", "タイトル2", "タイトル3"}
Dim intColumnWidth() As Integer = {50, 100, 150}
Dim TableStyle As DataGridTableStyle = New DataGridTableStyle()
For i As Integer = 0 To strName.Length - 1
'タイトル名称設定
Dim DataColumn As DataColumn = New DataColumn
DataColumn.ColumnName = strColumnName(i)
objDataTable.Columns.Add(DataColumn)
DataColumn.Dispose()
DataColumn = Nothing
'タイトルスタイル設定
Dim TextBoxColumn As DataGridTextBoxColumn = New DataGridTextBoxColumn
TextBoxColumn.MappingName = strName(i)
TextBoxColumn.HeaderText = strName(i)
TextBoxColumn.Width = intColumnWidth(i)
TableStyle.GridColumnStyles.Add(TextBoxColumn)
TextBoxColumn.Dispose()
TextBoxColumn = Nothing
Next i
TableStyle.MappingName = "objDataTable"
TableStyle.AllowSorting = False
TableStyle.HeaderFont = DataGrid1.HeaderFont
DataGrid1.TableStyles.Add(TableStyle)
TableStyle.Dispose()
TableStyle = Nothing
objDataSet.Tables.Add(objDataTable)
DataGrid1.DataSource = objDataSet.Tables("objDataTable")
▼質問
タイトルは、表示できたんだけど・・・。グリッドの左に表示されている列の幅を制御したいんだ!
どうしたらいいか教えてくれ!!
▼回答
それは、「行ヘッダー」って言うんだ。プロパティの「RowHeaderWidth」を設定すれば幅を制御
できるよ。行ヘッダーを非表示にしたい時は、「RowHeadersVisible」を「False」に設定すれば
非表示にできるんだ。「RowHeaderWidth」を、「0」に設定しても非表示にはならないから気を
つけてくれ!あと、15以下を設定しても幅は最小幅が決まっているので最小幅以下には変わら
ないから気をつけてくれ!
▼質問
今度は、データをグリッドに表示したいんだ。どうしたらいいの?
いろいろやってみたが、うまくいかないんだ!
DataGridの内容をDataSetにバインドできればできそうな気がするんだけど・・・。
▼回答
いいとこついてるね!それで、できるよ!
こうやってやればいいんだ。
Dim objDataSet As New DataSet
Dim objDataTable As DataTable = DirectCast(DataGrid1.DataSource, DataTable)
objDataSet.Tables.Add(objDataTable.Copy())
これで、データを追加する準備が整ったから、次に、このコードを書いて行が追加できるよ!
objDataTable.Rows.Add(New [Object]() {"データ1", "データ2", "データ3"})
▼質問
セルを選択すると選択した内容が反転表示するんだ。行毎で選択したいんだ!どうしたらいいの?
▼回答
DataGridの「Paint」イベントに次のコードを追加するとできるぞ!試してみてくれ!!
Me.DataGrid1.Select(Me.DataGrid1.CurrentCell.RowNumber)
■参考サイト
DataGrid コントロール (Windows フォーム)
http://msdn.microsoft.com/ja-jp/library/keb37h7b(VS.80).aspx
DataGridのレコードセレクタについて - Insider.NET
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=9895&forum=7
DataGridの中身をDataSetにテーブルとして保存する方法 (初心者) -OKWave
http://okwave.jp/qa2114885.html
@IT:.NET TIPS DataGridコントロールを行選択モードにするには? - C# VB.NET Windowsフォーム
http://www.atmarkit.co.jp/fdotnet/dotnettips/126dgselline/dgselline.html
Visual Basic .NET を使用して DataTable 間で DataRow をコピーする方法
http://support.microsoft.com/kb/305346/ja
DataGridを追加すると紺色の帯が上の部分に表示されるんだけど?!
これは何?消せないの?
▼回答
グリッドの上部に表示できるキャプション(=タイトル)だよ。
消し方は、プロパティの「CaptionVisible 」を「False」に設定するか、次のコードを書くかどちらかだね!
Me.DataGrid1.CaptionVisible = False
▼質問
タイトルを表示したいんだけど・・・サンプルはないかな?
▼回答
とりあえず、次に示しておくから参考にしてくれ!
Dim objDataSet As New DataSet
Dim objDataTable As DataTable = New DataTable("objDataTable")
DataGrid1.TableStyles.Clear()
DataGrid1.DataSource = Nothing
Dim strName() As String = {"タイトル1", "タイトル2", "タイトル3"}
Dim intColumnWidth() As Integer = {50, 100, 150}
Dim TableStyle As DataGridTableStyle = New DataGridTableStyle()
For i As Integer = 0 To strName.Length - 1
'タイトル名称設定
Dim DataColumn As DataColumn = New DataColumn
DataColumn.ColumnName = strColumnName(i)
objDataTable.Columns.Add(DataColumn)
DataColumn.Dispose()
DataColumn = Nothing
'タイトルスタイル設定
Dim TextBoxColumn As DataGridTextBoxColumn = New DataGridTextBoxColumn
TextBoxColumn.MappingName = strName(i)
TextBoxColumn.HeaderText = strName(i)
TextBoxColumn.Width = intColumnWidth(i)
TableStyle.GridColumnStyles.Add(TextBoxColumn)
TextBoxColumn.Dispose()
TextBoxColumn = Nothing
Next i
TableStyle.MappingName = "objDataTable"
TableStyle.AllowSorting = False
TableStyle.HeaderFont = DataGrid1.HeaderFont
DataGrid1.TableStyles.Add(TableStyle)
TableStyle.Dispose()
TableStyle = Nothing
objDataSet.Tables.Add(objDataTable)
DataGrid1.DataSource = objDataSet.Tables("objDataTable")
▼質問
タイトルは、表示できたんだけど・・・。グリッドの左に表示されている列の幅を制御したいんだ!
どうしたらいいか教えてくれ!!
▼回答
それは、「行ヘッダー」って言うんだ。プロパティの「RowHeaderWidth」を設定すれば幅を制御
できるよ。行ヘッダーを非表示にしたい時は、「RowHeadersVisible」を「False」に設定すれば
非表示にできるんだ。「RowHeaderWidth」を、「0」に設定しても非表示にはならないから気を
つけてくれ!あと、15以下を設定しても幅は最小幅が決まっているので最小幅以下には変わら
ないから気をつけてくれ!
▼質問
今度は、データをグリッドに表示したいんだ。どうしたらいいの?
いろいろやってみたが、うまくいかないんだ!
DataGridの内容をDataSetにバインドできればできそうな気がするんだけど・・・。
▼回答
いいとこついてるね!それで、できるよ!
こうやってやればいいんだ。
Dim objDataSet As New DataSet
Dim objDataTable As DataTable = DirectCast(DataGrid1.DataSource, DataTable)
objDataSet.Tables.Add(objDataTable.Copy())
これで、データを追加する準備が整ったから、次に、このコードを書いて行が追加できるよ!
objDataTable.Rows.Add(New [Object]() {"データ1", "データ2", "データ3"})
▼質問
セルを選択すると選択した内容が反転表示するんだ。行毎で選択したいんだ!どうしたらいいの?
▼回答
DataGridの「Paint」イベントに次のコードを追加するとできるぞ!試してみてくれ!!
Me.DataGrid1.Select(Me.DataGrid1.CurrentCell.RowNumber)
■参考サイト
DataGrid コントロール (Windows フォーム)
http://msdn.microsoft.com/ja-jp/library/keb37h7b(VS.80).aspx
DataGridのレコードセレクタについて - Insider.NET
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=9895&forum=7
DataGridの中身をDataSetにテーブルとして保存する方法 (初心者) -OKWave
http://okwave.jp/qa2114885.html
@IT:.NET TIPS DataGridコントロールを行選択モードにするには? - C# VB.NET Windowsフォーム
http://www.atmarkit.co.jp/fdotnet/dotnettips/126dgselline/dgselline.html
Visual Basic .NET を使用して DataTable 間で DataRow をコピーする方法
http://support.microsoft.com/kb/305346/ja