![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
Gridに「2006/05/10 13:00:00」と表示させたいのですが、「2006/05/10」と表示されてしまいます。
------------------------------------------------
Dim dt As DataTable
Dim dtSet As New DataSet
dt = dtSet.Tables.Add("aaa")
dt.Columns.Add("日付", Type.GetType("System.DateTime"))
dt.Rows.Add(New Object() {"2006/05/10 14:00:00"})
DataGrid1.DataSource = dt
------------------------------------------------
ソースが間違っているのでしょうか。どなたかアドバイスをお願いします。
No.2ベストアンサー
- 回答日時:
>他に方法ってないですか?
おそらく無いかと思います。
極力シンプルにしたいのであれば、関数化してあげると、メイン部のコードが多少ダイエットできると思います。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim dt As New DataTable("aaa")
Dim dc1 As New DataColumn("日付1", Type.GetType("System.DateTime"))
Dim dc2 As New DataColumn("日付2", Type.GetType("System.DateTime"))
dt.Columns.AddRange(New DataColumn() {dc1, dc2})
dt.Rows.Add(New Object() {"2006/05/10 14:00:00", "2006/05/11 14:00:00"})
DataGrid1.DataSource = dt
Dim ts As New DataGridTableStyle()
ts.MappingName = dt.TableName
ts.GridColumnStyles.Add(取得_TextBoxColumn(dc1))
ts.GridColumnStyles.Add(取得_TextBoxColumn(dc2, 120))
DataGrid1.TableStyles.Add(ts)
End Sub
'サイズ自動バージョン
Private Function 取得_TextBoxColumn(ByVal p_dc As DataColumn) As DataGridTextBoxColumn
Return 取得_TextBoxColumn(p_dc, -1)
End Function
'サイズ設定バージョン
Private Function 取得_TextBoxColumn(ByVal p_dc As DataColumn, ByVal p_width As Integer) As DataGridTextBoxColumn
Dim l_ret As New DataGridTextBoxColumn()
With l_ret
.MappingName = p_dc.ColumnName
.HeaderText = p_dc.ColumnName
.Format = "yyyy/MM/dd hh:mm:ss"
.Width = p_width
End With
Return l_ret
End Function
もっとシンプルにさせようとすると、別クラスを起こし、データグリッドを継承したオリジナルのコントロールを作成する方法が思いつきます。
あくまでも私の場合ですが、、、
・まだ他にグリッドに機能を持たせる恐れがあるのであれば、継承クラスを作成する
・この画面のみで利用する機能であれば、継承クラスを作成するまでもなし
という判断を行います。
どの様な創りがベストかは、全体設計から判断をされたらよいと思います。
分かりました。
>全体設計から判断をされたらよいと思います。
そうですね。全体設計からベストな方法を考えて見ます
ご回答ありがとうございます。
No.1
- 回答日時:
DataGridTextBoxColumn クラスを利用します
http://okwave.jp/kotaeru.php3?q=2062060
http://dobon.net/vb/dotnet/datagrid/columnformat …
http://dobon.net/vb/dotnet/datagrid/columnwidth. …
Dim dt As New DataTable("aaa")
Dim dc As New DataColumn("日付", Type.GetType("System.DateTime"))
dt.Columns.Add(dc)
dt.Rows.Add(New Object() {"2006/05/10 14:00:00"})
DataGrid1.DataSource = dt
Dim cs As New DataGridTextBoxColumn()
cs.MappingName = dc.ColumnName
cs.HeaderText = dc.ColumnName
cs.Width = 120
cs.Format = "yyyy/MM/dd hh:mm:ss"
Dim ts As New DataGridTableStyle()
ts.MappingName = dt.TableName
ts.GridColumnStyles.Add(cs)
DataGrid1.TableStyles.Add(ts)
この回答への補足
できました。ありがとうございました。
この場合、もう一つ同じような列を増やしたいときは
-------------------------------------------------
Dim dt As New DataTable("aaa")
Dim dc1 As New DataColumn("日付1", Type.GetType("System.DateTime"))
dt.Columns.Add(dc1)
Dim dc2 As New DataColumn("日付2", Type.GetType("System.DateTime"))
dt.Columns.Add(dc2)
dt.Rows.Add(New Object() {"2006/05/10 14:00:00","2006/05/11 14:00:00"})
DataGrid1.DataSource = dt
Dim ts As New DataGridTableStyle()
ts.MappingName = dt.TableName
'「日付1」の設定
Dim cs As New DataGridTextBoxColumn()
cs.MappingName = dc1.ColumnName
cs.HeaderText = dc1.ColumnName
cs.Width = 120
cs.Format = "yyyy/MM/dd hh:mm:ss"
ts.GridColumnStyles.Add(cs)
DataGrid1.TableStyles.Add(ts)
'「日付2」の設定
cs = New DataGridTextBoxColumn()
cs.MappingName = dc2.ColumnName
cs.HeaderText = dc2.ColumnName
cs.Width = 120
cs.Format = "yyyy/MM/dd hh:mm:ss"
ts.GridColumnStyles.Add(cs)
DataGrid1.TableStyles.Add(ts)
------------------------------------------------
のようにすれば、列の追加が出来たのですが、他に方法ってないですか?
ソースが汚くてすみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- C言語・C++・C# クラスのメンバ変数を基準に並べ替えをしたい 5 2022/12/25 17:40
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- 数学 単振り子とルンゲ・タック法 1 2022/07/15 00:05
- Excel(エクセル) 1つのファイルを3つのフォルダにファイル名を【明日の日付】にして、コピーをしたい 2 2022/12/21 17:43
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- PHP jpgraphで表示されない 2 2022/10/22 09:12
- Visual Basic(VBA) 【マクロ】フォルダにファイルが1つも無い時に、ファイルがありませんとメッセージを表示する 4 2022/08/28 08:48
- 数学 ラプラス変換について 3 2022/10/13 22:18
- Visual Basic(VBA) エクセルVBAで以下のようなコードを書いたらエラーになりました。何処が間違っているの教えて? 1 2023/02/10 18:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
既定のコンストラクタがない?
-
FriendとPublicの違い。。。
-
クラスのアドレスを引数として...
-
MFC 分割ウィンドウのそれぞれ...
-
MFCのCListCtrlでスクロールを検出
-
【ASP.NET】 独自で作成したク...
-
OnInitDialog()の関数の組み込み方
-
エディットコントロールでEnter...
-
CMainFrameクラスの使い方
-
イベントにAddHandlerされてい...
-
VC++ 7.1 で メインウィンドウ...
-
Gridに日付を入れるとき
-
VC++ リストボックスにデータを...
-
画像をクラスにどうやって渡す...
-
ダイアログ表示時にチェックボ...
-
C++ protectedにアクセス不可
-
DebugクラスとTraceクラスの違い
-
MessageBoxを継承したい
-
MFCアプリのコマンドラインでパ...
-
(UWSC) 「#32770」の意味わかり...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FriendとPublicの違い。。。
-
既定のコンストラクタがない?
-
(UWSC) 「#32770」の意味わかり...
-
クラスのアドレスを引数として...
-
エディットコントロールのイベ...
-
ダイアログ表示時にチェックボ...
-
イベントにAddHandlerされてい...
-
ダイアログクラスのコントロー...
-
C++ protectedにアクセス不可
-
DebugクラスとTraceクラスの違い
-
DataGridViewのセルに斜線を引...
-
【ASP.NET】 独自で作成したク...
-
このコンパイルエラーの意味に...
-
エディットコントロールでEnter...
-
継承を重ねた場合のコストはど...
-
C#で通常のbuttonコントロール...
-
ボタンのオーナードローについて
-
MFCのCListCtrlでスクロールを検出
-
【C++】相互参照
-
SetTimerの行でアサートエラー...
おすすめ情報