【发布时间】: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()在循环中?因此,在循环的每次迭代中,您删除所有项目并添加一个新项目。所以只有最后一个留在列表视图中。