2017-02-10 272 views
0

我在C#中有一个winforms应用程序,用户必须从combobox中选择数据,然后这些项目列在listbox中。是 我的问题如下: 如果用户选择的结果出现好项目,但如果他选择另一项目的老结果不会被清除,所以我使用的线路:c#将列添加到列表框并清除列表项

listView1.Items.Clear(); 

但是,如果我用这行代码,结果不会完全显示,还有行缺失。

我的代码是:

SqlDataAdapter sda = new SqlDataAdapter(@"select [desc],[enchimento] from vidros where desempenho = @emp", con); 
    sda.SelectCommand.Parameters.Add("@emp", SqlDbType.NVarChar).Value = desempenho.Text; 
    DataTable DTT = new DataTable(); 
    sda.Fill(DTT); 

    for (int i = 0; i < DTT.Rows.Count; i++) 
    { 
     listView1.Items.Clear(); 
     DataRow dr = DTT.Rows[i]; 
     ListViewItem listitem = new ListViewItem(dr["desc"].ToString()); 
     listitem.SubItems.Add(dr["desc"].ToString()); 
     listitem.SubItems.Add(dr["enchimento"].ToString()); 
     listView1.Items.Add(listitem); 
    } 

第二个问题是,我有2个字段,我想在列表框中,(降序和enchimento)来显示的,但在列表框中仅显示其中之一。

+0

也许你可以加入他们的行列,例如:listitem.SubItems.Add(DR [ “”desc“]。ToString()+”“+ dr [”enchimento“]。ToString()); –

+0

我认为有选择和取消选择方法listview ..尝试与intellisense,我认为有可能很容易解决您的问题 – Joshit

+0

@ FedericoNavarrete谢谢,解决了2项显示。现在我只需要清除旧选择 – septaug

回答

1

您可以拨打listView1.Items.Clear()里面的循环。

因此,在循环的每次迭代中,您将删除所有项目并添加一个新项目。所以只有最后一个停留在列表视图中。

招行之前的循环:

listView1.Items.Clear(); 
for (int i = 0; i < DTT.Rows.Count; i++) 
{ 
    DataRow dr = DTT.Rows[i]; 
    ListViewItem listitem = new ListViewItem(dr["desc"].ToString()); 
    listitem.SubItems.Add(dr["desc"].ToString()); 
    listitem.SubItems.Add(dr["enchimento"].ToString()); 
    listView1.Items.Add(listitem); 
} 
0

PL

Please use like below ExP: 
 

 
    string InputValue="12"; 
 

 
     List<string> listView1 = new List<string>(); 
 
     using (SqlConnection conn = new SqlConnection()) 
 
     { 
 
      List<string> terms = InputValue.Split(',').ToList(); 
 
      terms = terms.Select(s => s.Trim()).ToList(); 
 

 
      //Extract the term to be searched from the list 
 
      string searchTerm = terms.LastOrDefault().ToString().Trim(); 
 

 
      //Return if Search Term is empty 
 
      if (string.IsNullOrEmpty(searchTerm)) 
 
      { 
 
       return new string[0]; 
 
      } 
 

 
      //Populate the terms that need to be filtered out 
 
      List<string> excludeTerms = new List<string>(); 
 
      if (terms.Count > 1) 
 
      { 
 
       terms.RemoveAt(terms.Count - 1); 
 
       excludeTerms = terms; 
 
      } 
 

 
      conn.ConnectionString = ConfigurationManager 
 
        .ConnectionStrings["CON"].ConnectionString; 
 
      using (SqlCommand cmd = new SqlCommand()) 
 
      { 
 
       string query = "select [desc],[enchimento] from vidros where " + 
 
       " desempenho = @emp"; 
 

 
       cmd.CommandText = query; 
 
       cmd.Parameters.AddWithValue("@emp", searchTerm); 
 
       cmd.Connection = conn; 
 
       conn.Open(); 
 
       using (SqlDataReader sdr = cmd.ExecuteReader()) 
 
       { 
 
        while (sdr.Read()) 
 
        { 
 
         listView1.Add(string.Format("{0}-{1}", sdr["desc"], sdr["enchimento"])); 
 
        } 
 
       } 
 
       conn.Close(); 
 
      } 
 
      return listView1.ToArray();