2011-09-23 20 views
0

私は、指定された文字列のリストビューを検索し、見つかったものをColorとマークする方法を書いています。しかし、画面やスクロール可能なListViewに関する多くの情報でうまくいきますが、ユーザーが探しているものを見つけるのが難しいことがあります。Search in ListView c#

通常、方法とSQLクエリWHERE句を変更してspecial検索を作成しますが、それは常に苦労し、各ListView/Dataに対してより多くの作業/コードが必要です。

ListViewのすべての種類の検索には、現在持っているように機能しますが、不要な行を非表示にして必要な行だけを表示する機能があります。もちろん、もしそれが気になるなら、古い行を元に戻す必要があります。

私にとって最大の問題は、すべての列とデータを3から20列以上の複数の行になることがあることを熟知していないまま保存する方法だと思います。

public static void wyszukajNazweListView(ListView varListView, string varWyszukaj) { 
     if (varWyszukaj != "") { 
      foreach (ListViewItem comp in varListView.Items) { 
       comp.UseItemStyleForSubItems = false; 
       foreach (ListViewItem.ListViewSubItem drv in comp.SubItems) { 
        string textToAdd2 = drv.Text; 
        if (textToAdd2.Length >= 1) { 
         if (textToAdd2.ToLower().Contains(varWyszukaj.ToLower())) { 
          drv.BackColor = Color.DarkOrange; 
         } else { 
          drv.BackColor = Color.White; 
         } 
        } 
       } 
       bool varColor = false; 
       foreach (ListViewItem.ListViewSubItem drv in comp.SubItems) { 
        if (drv.BackColor == Color.DarkOrange) { 
         varColor = true; 
         break; 
        } 
       } 
       if (varListView.SmallImageList != null) { 
        if (varColor) { 
         comp.ImageIndex = 2; 
        } else { 
         comp.ImageIndex = -1; 
        } 
       } 
      } 
     } else { 
      foreach (ListViewItem comp in varListView.Items) { 
       comp.UseItemStyleForSubItems = false; 
       comp.BackColor = Color.White; 
       foreach (ListViewItem.ListViewSubItem drv in comp.SubItems) { 
        drv.BackColor = Color.White; 
        comp.ImageIndex = -1; 
       } 
      } 
     } 
    } 

答えて

1

おそらくDataTableオブジェクトとして保存します。 DataTableタイプでは、行を非表示に設定できます(例:Visible = false)、リストビューを直接バインドすることができます。

EDIT:WinFormsタグに気づいた。さらに簡単です:ViewState/Sessionで嘲笑する必要はありません。

+0

私はDataTableなど何も使用しません。私は手で書かれた列を埋める質問で古いスタイルをします。 – MadBoy

+0

DataTableは、「最大の問題」に対する答えです。「私にとって最大の問題は、すべての列とデータを3〜20列以上の行数にすることを複雑にすることなく格納する方法だと思います。 – Tsar