2017-02-10 4 views
0

私はcomboboxからデータを選択する必要があるwinformsアプリを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つのフィールド、(descとenchimento)を持っていますが、リストボックスには、それらの一方のみが表示されます。

+0

たぶん、あなたは、例えば、それらを結合することができます:listitem.SubItems.Add(DRを[ "desc"]。ToString()+ "" + dr ["enchimento"]。ToString()); –

+0

リストビューの選択と非選択の方法があると思います。intellisenseを試してみてください。あなたの問題を簡単に解決できる可能性があると思います。 – Joshit

+0

@FedericoNavarreteありがとうございました。今私は古い選択をクリアする必要がある – septaug

答えて

1

listView1.Items.Clear()ループを呼び出します。

ループの各繰り返しでは、すべてアイテムを削除し、新しいものを1つ追加します。したがって、最後にだけがリストビューにとどまります。

前にループをライン を移動

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

P1の

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();

関連する問題