2013-09-08 3 views
-1

Я это, чтобы показать все записи из базы данных в ListViewВыбрать пункт в ListView Программного

private void populatelistview() 
    { 
     listView1.Items.Clear(); 
     using (SqlConnection myDatabaseConnection = new SqlConnection(myConnectionString.ConnectionString)) 
     { 
      myDatabaseConnection.Open(); 
      using (SqlCommand SqlCommand = new SqlCommand("Select * from Employee", myDatabaseConnection)) 
      { 
       SqlCommand.CommandType = CommandType.Text; 
       SqlDataReader dr = SqlCommand.ExecuteReader(); 
       while (dr.Read()) 
       { 
        listView1.Items.Add(new ListViewItem(new string[] { dr["EmpID"].ToString(), dr["Lname"].ToString(), dr["Fname"].ToString() })); 
       } 
      } 
     } 
    } 

Например у меня есть этот результат:

EmpID | Lname | Fname 
40001 | Smith | John 
40002 | Jones | David 
40003 | Bryan | Kobe 

Как я программно выбрать элемент из списка выше? Например, я типа 40002 в TextBox, то это будет выбран 40002 | Jones | David

ответ

3

Вы должны обрабатывать TextChanged событие вашей TextBox:

//TextChanged event handler for your textBox1 
private void textBox1_TextChanged(object sender, EventArgs e) { 
     ListViewItem item = listView1.Items.OfType<ListViewItem>() 
            .FirstOrDefault(x => x.Text.Equals(textBox1.Text, StringComparison.CurrentCultureIgnoreCase)); 
     if (item != null){ 
      listView1.SelectedItems.Clear(); 
      item.Selected = item.Focused = true; 
      listView1.Focus();//Focus to see it in action because SelectedItem won't look like selected if the listView is not focused. 
     } 
} 

Вы также можете использовать ListView.FindItemWithText метод, но обратите внимание, что он соответствует точная строка, которая начинает текст пункта, это означает, что вам нужно самому справиться с ситуацией, если хотите.

+0

Спасибо, король :) Что я буду менять, когда захочу найти его по имени? –

+0

@KarlxSwanovski Что вы подразумеваете под 'Lname'? Если вы имеете в виду 'Name', вы можете заменить' x.Text' на 'x.Name'. –

+0

Код, который вы указали, это найти с помощью EmpID, что я могу изменить, чтобы найти по Lname? То, что я имею в виду с Lname, является вторым столбцом на моем примере –