У меня возникла проблема с извлечением нескольких флажков в моей программе. Итак, как вы можете видеть ниже, я пытаюсь получить из моей базы данных на основе набора значений из checkboxlist.Извлечь несколько значений из CheckboxList с помощью SQL WHERE IN
Если я выберу значение ONE, база данных сможет извлечь элемент, однако, если я выберу значение «БОЛЬШЕ, ЧЕМ ONE», ничего не появится. Может кто-то мне помочь, пожалуйста? Я потратил на это довольно много времени.
Я видел другие решения, но, похоже, это не помогло мне. Спасибо.
protected void chkBoxCategories_SelectedIndexChanged(object sender, EventArgs e)
{
// Create the list to store.
List<String> YrStrList = new List<string>();
// Loop through each item.
foreach (ListItem item in chkBoxCategories.Items)
{
if (item.Selected)
{
// If the item is selected, add the value to the list.
YrStrList.Add(item.Value);
}
else
{
// Item is not selected, do something else.
}
}
// Join the string together using the ; delimiter.
Session["UPCategories"] = String.Join(", ", YrStrList.ToArray());
}
Следующий код находится на другой странице:
SqlDataSource1.SelectCommand = "SELECT sf.*, sfc.* FROM SkillsFuture sf INNER JOIN SkillsFutureCategory sfc ON sfc.SFCatID = sf.fkSFCatID WHERE sfc.SFCatName IN (@catnames) AND sf.SFPrice BETWEEN @min AND @max AND sf.SFCertStatus='Verified'";
SqlDataSource1.SelectParameters.Add("catnames", Session["UPCategories"].ToString());
SqlDataSource1.SelectParameters.Add("min", Convert.ToDecimal(Session["UPBudgetMin"]).ToString());
SqlDataSource1.SelectParameters.Add("max", Convert.ToDecimal(Session["UPBudgetMax"]).ToString());
SqlDataSource1.DataBind();
Строка, содержащая ''x, y, z'', не совпадает с символом' x, y, z'. Первое - это одно значение. Второй - три значения. –