Reputation: 100
I don't know that my question is right or not .. but i want to display data into datagridview depending on multi selection items from list box
for example
in this pic i have listbox which retrieve data from database i want to display result related to items which user select
when i select items the query must related to my selected items
my code
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();
but like the first pic datagridview show no data i used SQLServer 2008 for this
where's the wrong ? .. sorry for bad english :)
Upvotes: 0
Views: 644
Reputation: 4513
You can combine strings with for loop,
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
Or you can use linq
and string.Format()
,
string stringComparision = string.Join(",", listBox1.Items.Cast<string>()
.Select(x => string.Format("'{0}'", x)));
Choose one of them and the rest is same,
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();
Test scenario; I have listbox with items : "test1","test2","test3","test4","test5"
Output is:
select * from Territories where TerritoryName IN ('test1','test2','test3','test4','test5')
Hope helps,
Upvotes: 1