Solved

Find item in list view

Posted on 2004-09-29
5
352 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
5 Comments
 
LVL 20

Expert Comment

by:TheAvenger
ID: 12187527
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
ID: 12188306
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
ID: 12188317
@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
ID: 12196719
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
ID: 12198453
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

PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Where does legacy ASP.NET initialize language? 2 103
aspx ascx, c# 7 45
Health check of winows and webservces 5 53
Timeouts during development 3 29
Introduction Although it is an old technology, serial ports are still being used by many hardware manufacturers. If you develop applications in C#, Microsoft .NET framework has SerialPort class to communicate with the serial ports.  I needed to…
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…
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…
How to Install VMware Tools in Red Hat Enterprise Linux 6.4 (RHEL 6.4) Step-by-Step Tutorial

710 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