我不知道我的问题是否正确..但我希望根据列表框中的多项选择项将数据显示到datagridview
例如
在这张图片中我有从数据库中检索数据的列表框我想显示与用户选择的项目相关的结果
当我选择项目时,查询必须与我选择的项目相关
我的代码
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进行此操作
哪里错了?对不起,英语不好:)
答案 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)
希望有所帮助,