- ベストアンサー
Gridに日付を表示する方法
- Gridに日付を正しく表示させる方法についてアドバイスをお願いします。
- 現在のソースでは、日付の表示が間違っています。正しい表示方法を教えてください。
- 「2006/05/10 13:00:00」と表示させるためには、どのように修正すればよいでしょうか。
- みんなの回答 (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 もっとシンプルにさせようとすると、別クラスを起こし、データグリッドを継承したオリジナルのコントロールを作成する方法が思いつきます。 あくまでも私の場合ですが、、、 ・まだ他にグリッドに機能を持たせる恐れがあるのであれば、継承クラスを作成する ・この画面のみで利用する機能であれば、継承クラスを作成するまでもなし という判断を行います。 どの様な創りがベストかは、全体設計から判断をされたらよいと思います。
その他の回答 (1)
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
DataGridTextBoxColumn クラスを利用します http://okwave.jp/kotaeru.php3?q=2062060 http://dobon.net/vb/dotnet/datagrid/columnformat.html http://dobon.net/vb/dotnet/datagrid/columnwidth.html 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) ------------------------------------------------ のようにすれば、列の追加が出来たのですが、他に方法ってないですか? ソースが汚くてすみません。
お礼
分かりました。 >全体設計から判断をされたらよいと思います。 そうですね。全体設計からベストな方法を考えて見ます ご回答ありがとうございます。