如何将列表框中的动态查询结果显示到datagridview中

时间:2017-09-11 13:52:26

标签: c# winforms listbox

我不知道我的问题是否正确..但我希望根据列表框中的多项选择项将数据显示到datagridview

例如

enter image description here

在这张图片中我有从数据库中检索数据的列表框我想显示与用户选择的项目相关的结果

enter image description here

当我选择项目时,查询必须与我选择的项目相关

我的代码

for (int i = 0; i < listBox1.Items.Count; i++)
        {
            stringComparision += "'" + listBox1.Items[i].ToString() + "',";
        }
        stringComparision = stringComparision.TrimEnd(','); 
        conn.Open();
        SqlDataAdapter da = new SqlDataAdapter("select * from Territories where TerritoryName IN (" + stringComparision + ") ", conn);
        DataTable dt = new DataTable();
        da.Fill(dt);
        dataGridView1.DataSource = dt;
        conn.Close();

但是像第一张pic datagridview显示没有数据 我使用SQLServer 2008进行此操作

哪里错了?对不起,英语不好:)

1 个答案:

答案 0 :(得分:1)

您可以将字符串与for循环组合,

*ShoesLadies

或者您可以使用string stringComparision = ""; for(int i = 0; i < listBox1.SelectedItems.Count; i++) { DataRowView dr = listbox1.SelectedItems[i] as DataRowView; stringComparision += "'" + dr["TerritoryName"].ToString() + "',"; } stringComparision = stringComparision.TrimEnd(','); // to delete last comma linq

string.Format()

选择其中一个,其余部分相同,

string stringComparision = string.Join(",", listBox1.Items.Cast<string>()
                               .Select(x => string.Format("'{0}'", x)));

测试场景;我的列表框中包含以下项目:conn.Open(); SqlDataAdapter da = new SqlDataAdapter("select * from Territories where TerritoryName IN (" + stringComparision + ") ", conn); DataTable dt = new DataTable(); da.Fill(dt); dataGridView1.DataSource = dt; conn.Close();

输出是:

  

从TerritoryName IN的地区中选择*   (&#39; TEST1&#39;&#39; TEST2&#39;&#39; TEST3&#39;&#39; TEST4&#39;&#39; TEST5&#39)

希望有所帮助,