2017-02-10 434 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();