【问题标题】:c# add columns to listbox and clear list itemsc# 向列表框添加列并清除列表项
【发布时间】:2017-02-10 08:40:23
【问题描述】:

我有一个 C# 中的 winforms 应用程序,其中用户必须从 combobox 中选择数据,然后将这些项目列在 listbox 中。 我遇到的问题如下: 如果用户选择了一个项目,结果看起来还可以,但如果他选择另一个项目,旧的结果将不会被清除,所以我使用以下行:

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),但列表框只显示其中一个。

【问题讨论】:

  • 也许你可以加入他们,例如:listitem.SubItems.Add(dr["desc"].ToString() + " "+dr["enchimento"].ToString());
  • 我认为列表视图有选择和取消选择方法。尝试使用智能感知,我认为有可能轻松解决您的问题
  • @FedericoNavarrete 谢谢,解决了显示的 2 个项目。现在我只需要清除旧的选择
  • 我认为您可以在另一部分应用一些此解决方案:stackoverflow.com/questions/13858565/…
  • 你打电话给listView1.Items.Clear()在循环中?因此,在循环的每次迭代中,您删除所有项目并添加一个新项目。所以只有最后一个留在列表视图中。

标签: c# sql combobox listbox


【解决方案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);
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-20
      • 1970-01-01
      • 2018-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多