Solved

Find item in list view

Posted on 2004-09-29
5
347 Views
Last Modified: 2008-01-09
Dear experts,
I just wondering that is there any control available to search a string in the list view or not. If not could someone show me how to implement that control please.
There function of the control is similar to the Find function (F5) in Excel or Word, when you want to look up the string or piece of information, the popup dialog prompt to enter the string and a list of options such as Match case, Match the whole word, find next button, etc...
The function should be return the index of the list item in the list view.
I am thinking of using foreach to do this job but is there any better way to do so.

Thank you so much.

0
Comment
Question by:contran
  • 3
5 Comments
 
LVL 20

Expert Comment

by:TheAvenger
Comment Utility
No, there isn't. You have to go over all elements in the list view and check using String.IndexOf() if the element contains the searched string.
0
 
LVL 10

Expert Comment

by:123654789987
Comment Utility
Try this.

                                                ListView  listView2 = new ListView();

                  ListViewItem ite = new ListViewItem("Search text");
                   int foundListItem = listView2.Items.IndexOf(ite);
0
 
LVL 20

Expert Comment

by:TheAvenger
Comment Utility
@123654789987: this solution could find only items which have exactly this text, it would not find an item with the text:

"Hello Search text Hello"

Also as you are creating a new listviewitem, I suppose it will not be found at all in the Items collection - it is just not there
0
 

Author Comment

by:contran
Comment Utility
Hi TheAvenger,

Thank you for your suggestion , i can found the searching key using IndexOf() however how can i do the find next button i.e. if more than 1 results in the list view the findnext button should be able to capture all results.
Here is the code that i've used
//The str - the search key word,
//flag - indicate the optional search i.e. 0 for match exact word, 1 for match case
private int SearchItem(string str,int flag)
{
  int index = -1;
  foreach(System.Windows.Forms.ListViewItem item in this.listView1.Items)
  {
     foreach(ListViewItem.ListViewSubItem subItem in item.SubItems)
     {
       if(flag == 0)
       {
          if(subItem.Text.Trim() == str.Trim())
      index =  item.Index;
       }
     
      if(flag == 1)
      {
        int text = subItem.Text.IndexOf(str);
        if(text!=0)
        {
           //MessageBox.Show(this,text.ToString(),"");
           index =  item.Index;
        }
       }
     }
   }
       return index;      
}




0
 
LVL 20

Accepted Solution

by:
TheAvenger earned 125 total points
Comment Utility
Well, you can keep a collection of list items that contain the required text. For example use an ArrayList to put the list items in.

And one remark: the comparison if (text != 0) is wrong. It should be if (text >= 0) because 0 is a valid index, so IndexOf will return 0 if the text starts with what you search for.
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Suggested Solutions

Extention Methods in C# 3.0 by Ivo Stoykov C# 3.0 offers extension methods. They allow extending existing classes without changing the class's source code or relying on inheritance. These are static methods invoked as instance method. This…
We all know that functional code is the leg that any good program stands on when it comes right down to it, however, if your program lacks a good user interface your product may not have the appeal needed to keep your customers happy. This issue can…
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
You have products, that come in variants and want to set different prices for them? Watch this micro tutorial that describes how to configure prices for Magento super attributes. Assigning simple products to configurable: We assigned simple products…

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now