C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: ListViewの並び替えについて


(過去ログ 74 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■43447 / inTopicNo.1)  ListViewの並び替えについて
  
□投稿者/ おいおい (1回)-(2009/11/10(Tue) 19:50:03)

分類:[VB.NET/VB2005 以降] 

2009/11/10(Tue) 19:50:35 編集(投稿者)
2009/11/10(Tue) 19:50:30 編集(投稿者)

<pre><pre>Visual Basic 2008のListViewについて質問させていただきます。

今の現状は項目(column)にいくつか設定しています。
たとえば日付や番号

それでListViewの並び替えしようと思い

Private Sub ListView1_Column(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.ColumnClick

If ListView1.Sorting = SortOrder.Ascending Then
ListView1.Sorting = SortOrder.Descending
Else
ListView1.Sorting = SortOrder.Ascending
End If

End Sub


でもこれだと一番初めの項目の数値で判断しているようでうまくいきません。

理想としては、日付の項目を押したら日付順に、番号の項目を押したら番号順にと
項目ごとに並び換えしたいです。昇順と降順も押すごとに換わるようにしたいです。

どなたかよろしくお願いします。</pre></pre>
引用返信 編集キー/
■43448 / inTopicNo.2)  Re[1]: ListViewの並び替えについて
□投稿者/ オショウ (384回)-(2009/11/10(Tue) 21:04:46)
No43447 (おいおい さん) に返信
> 理想としては、日付の項目を押したら日付順に、番号の項目を押したら番号順にと
> 項目ごとに並び換えしたいです。昇順と降順も押すごとに換わるようにしたいです。
>
> どなたかよろしくお願いします。

  http://dobon.net/vb/dotnet/control/lvitemsort.html

  ここが参考になるかと・・・

以上。
引用返信 編集キー/
■43463 / inTopicNo.3)  Re[2]: ListViewの並び替えについて
□投稿者/ おいおい (2回)-(2009/11/11(Wed) 00:43:42)
No43448 (オショウ さん) に返信
> ■No43447 (おいおい さん) に返信
>>理想としては、日付の項目を押したら日付順に、番号の項目を押したら番号順にと
>>項目ごとに並び換えしたいです。昇順と降順も押すごとに換わるようにしたいです。
>>
>>どなたかよろしくお願いします。
>
>   http://dobon.net/vb/dotnet/control/lvitemsort.html
>
>   ここが参考になるかと・・・
>
> 以上。


そこのサイトに書いてあるのをコピペしてやってみたのですが、うまくいきませんでした。
特に ListViewItemComparer というので「定義されていません」と出てエラーになってしまいます。

どうにかならないでしょうか?
引用返信 編集キー/
■43468 / inTopicNo.4)  Re[3]: ListViewの並び替えについて
□投稿者/ Mr.T (326回)-(2009/11/11(Wed) 08:51:24)
Mr.Tです。

あなたのプログラムに対して、コピペして動くサンプルは自分で作らない限りないと思います。
少なくとも、自分のプログラムとサンプル例の整合性をはかるようにしてください。

一つ問題点をあげると、
>特に ListViewItemComparer というので「定義されていません」と出てエラーになってしまいます。

これは、クラスを自前でつくるのですよ。
サンプル例の「最初にこういうクラスを定義して」という内容がありますので、ご確認のほど。


引用返信 編集キー/
■43470 / inTopicNo.5)  Re[3]: ListViewの並び替えについて
□投稿者/ επιστημη (2260回)-(2009/11/11(Wed) 09:01:03)
επιστημη さんの Web サイト
> そこのサイトに書いてあるのをコピペしてやってみたのですが、うまくいきませんでした。
> 特に ListViewItemComparer というので「定義されていません」と出てエラーになってしまいます。

ちゃんと動いてくれますよ?
なんかヘンなことしてんじゃないかしら。

引用返信 編集キー/
■43472 / inTopicNo.6)  Re[1]: ListViewの並び替えについて
□投稿者/ みきぬ (645回)-(2009/11/11(Wed) 09:23:11)
No43447 (おいおい さん) に返信
> それでListViewの並び替えしようと思い
>
かわりに DataGridView を使うに1票。
引用返信 編集キー/
■43475 / inTopicNo.7)  Re[1]: ListViewの並び替えについて
□投稿者/ おいおい (3回)-(2009/11/11(Wed) 10:14:26)
2009/11/11(Wed) 10:16:33 編集(投稿者)
2009/11/11(Wed) 10:16:30 編集(投稿者)

<pre><pre>すいません
知識不足勉強不足でまだ理解できません

なのでソースコードを書いてみます


Public Class Form1




Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub


Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click




With ListView1
.View = View.Details

.Columns.Add("日時", 100, HorizontalAlignment.Left)
.Columns.Add("番号", 100, HorizontalAlignment.Left)


Using parser As New FileIO.TextFieldParser("aaa.csv", System.Text.Encoding.GetEncoding("SHIFT_JIS"))
parser.TextFieldType = FileIO.FieldType.Delimited
parser.HasFieldsEnclosedInQuotes = True
parser.SetDelimiters(",")
ListView1.Items.Clear()

While Not parser.EndOfData

Dim fields As String() = parser.ReadFields()

ListView1.Items.Add(New ListViewItem(fields))

End While

End Using

End With






End Sub


Private Sub ListView1_ColumnClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.ColumnClick


If ListView1.Sorting = SortOrder.Ascending Then
ListView1.Sorting = SortOrder.Descending
Else
ListView1.Sorting = SortOrder.Ascending
End If




End Sub




Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Writer As New IO.StreamWriter("aaa.csv", True, System.Text.Encoding.GetEncoding("Shift-JIS"))
Dim Line As String

Line = Me.TextBox1.Text & "," & Me.TextBox2.Text '

Writer.WriteLine(Line)
Writer.Close()

End Sub


Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged

End Sub
End Class



これからどうすればいいのでしょうか
</pre></pre>
引用返信 編集キー/
■43480 / inTopicNo.8)  Re[2]: ListViewの並び替えについて
□投稿者/ オショウ (387回)-(2009/11/11(Wed) 11:17:58)
No43475 (おいおい さん) に返信
> これからどうすればいいのでしょうか

  あららら・・・

  http://dobon.net/vb/dotnet/control/lvitemsort.html

  ここの『さらに拡張』の方を使って・・・

※ データのファイルからの読み出しや書き出しは、ご自身でインプリ
  してネ!

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        '詳細表示にする
        ListView1.View = View.Details
        'ColumnClickイベントハンドラの追加
        AddHandler ListView1.ColumnClick, AddressOf ListView1_ColumnClick

        'ListViewItemを追加する
        ListView1.Items.Add(New ListViewItem(New String() {"2009/11/11 10:00:00", "80"}))
        ListView1.Items.Add(New ListViewItem(New String() {"2008/11/11 01:00:00", "5"}))
        ListView1.Items.Add(New ListViewItem(New String() {"2009/11/10 10:00:00", "100"}))

        '列の追加
        ListView1.Columns.Add("日時", 150, HorizontalAlignment.Left)
        ListView1.Columns.Add("番号", 100, HorizontalAlignment.Right)

        'ListViewItemComparerの作成と設定
        listViewItemSorter = New ListViewItemComparer
        listViewItemSorter.ColumnModes = New ListViewItemComparer.ComparerMode() _
            {ListViewItemComparer.ComparerMode.DateTime, _
             ListViewItemComparer.ComparerMode.Integer}

        'ListViewItemSorterを指定する
        ListView1.ListViewItemSorter = listViewItemSorter

    End Sub

  日時列を、DateTime属性に変更するだけで、動きます・・・

以上。参考まで

引用返信 編集キー/
■43484 / inTopicNo.9)  Re[3]: ListViewの並び替えについて
□投稿者/ オショウ (388回)-(2009/11/11(Wed) 13:52:17)
よく考えたら・・・

データがCSV形式なので、OleDbでDataSetに読み込んで
DataGridViewにそのままバインドすれば、大層なことは
しなくてよいですネ〜

ソート項目は、どの列がクリックされたかでSQL文の
Order byを適切に設定するだけで済む・・・

もしくは、LINQ to DataSet で、CSVをDataSetにさえ
読み込んでおけば、LINQのSQL文のorderby設定だけで
データのソートして、DataGridViewに表示・・・

難しいようで、その方が簡単・・・

データの編集もDB的に行えば、DataGridViewの方が
そのまま編集にも使えるし・・・

以上。参考まで
引用返信 編集キー/
■43512 / inTopicNo.10)  Re[4]: ListViewの並び替えについて
□投稿者/ おいおい (4回)-(2009/11/11(Wed) 19:49:00)
2009/11/11(Wed) 19:49:19 編集(投稿者)

No43484 (オショウ さん) に返信

ListViewではなくDataGridViewを利用したらうまくいきました。

ネットで探してコピペなどしただけですが・・・

並び替えもよくわかりませんができてます。



やはりまだまだ勉強不足だとつくづく思います・・・

みなさんありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -