質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

3回答

11043閲覧

datasourceを使わない、datagridviewへの表示方法

退会済みユーザー

退会済みユーザー

総合スコア0

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2016/06/10 02:08

datagridviewにデータを表示しています。
そのデータを並べ替え操作したりするのですが、datagridviewは数値を文字列として認識してしまうので、数値の列の並べ替えがおかしくなっています。
そこでsortcompareを使用したのですが、sortcompareはdatasourceを使用時には使えないということが判明しました。

datasourceを使わない表示方法を教えていただけないでしょうか。
valueを使えばいいということは知ったのですが、どう使えばいいのかわかりません。

Dim dt As New DataTable() Dim dr As DataRow = dt.NewRow() dt.Columns.Add("ファイル名") dt.Columns.Add("容量(KB)") dr("ファイル名") = IO.Path.GetFileName(f) dr("容量(KB)") = fsize.length dt.Rows.Add(dr) dgv.DataSource = dt

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

Dim fL As New IO.FileInfo(f) Dim fLength As String = fL.Length Dim fSIZE As Integer = CType(fLength, Integer) DataGridView1.Columns.Clear() DataGridView1.Columns.Add(fNAME, "ファイル名") DataGridView1.Columns.Add(fSIZE, "容量(KB)") DataGridView1.Rows.Add(IO.Path.GetFileName(f), fSIZE)

投稿2016/06/12 09:21

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ソースを見たわけじゃないですが、DataGridViewはバインドをすると内部的にDataViewを作成してそれを介して表示をしている様です。
グリッド側でソートをしようとするとDataViewのSortプロパティが変更されて結果的に表示が変わるという仕組みですね。
ですので大本のDataTableの列の型を数値にすれば適切にソートできます。
例えばこんな感じ

VB.NET

1 Dim dt As New DataTable 2 Dim dr As DataRow = dt.NewRow 3 4 dt.Columns.Add("hoge") 5 dt.Columns.Add("fuga", GetType(Integer)) 6 7 dt.Rows.Add(dr) 8 9 DataGridView1.DataSource = dt 10 11

投稿2016/06/10 03:06

ToyoKskKN

総合スコア28

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/06/12 09:08

dt.Columns.Add("fuga", GetType(Integer)) で、エラーがでてうまくいきませんでした。おそらく全体構成の問題もあると思うのですが。
guest

0

私も以前、「datagridviewは数値を文字列として認識してしまうので、数値の列の並べ替えがおかしくなる」という事象の際に
データ取得のSQLでCAST関数を使用して、数値に変換したことがあります。
CAST関数を使用すれば、数値として並び替えができますよ。

投稿2016/06/10 02:37

tomo.ina

総合スコア357

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/06/12 09:09

CTypeを使用して、tableを使用せずdatagridviewに直接書き込む方法でうまくいきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問