Когда я нажму на элемент checkboxlist2, не выбрав элемент checkboxlist1, затем нажмите кнопку «Поиск ошибки». Я думаю, что checkboxlist2 кодирование является неправильным, пожалуйста, следуйте ниже код:Неправильный синтаксис рядом с ключевым словом «И» в запросе
protected void Page_Load(object sender, EventArgs e)
{
if(!this.IsPostBack)
{
this.BindGrid();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
this.BindGrid();
}
private void BindGrid()
{
string conString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
string query = "SELECT * FROM Table_RegistrationInfo WHERE true";
string condition = string.Empty;
foreach (ListItem item in CheckBoxList1.Items)
{
condition += item.Selected ? string.Format("'{0}',", item.Value) : "";
}
if (!string.IsNullOrEmpty(condition))
{
condition = string.Format(" AND Nationality in ({0})", condition.Substring(0, condition.Length - 1));
}
string condition2 = string.Empty;
foreach (ListItem item in CheckBoxList2.Items)
{
condition2 += item.Selected ? string.Format("'{0}',", item.Value) : "";
}
if (!string.IsNullOrEmpty(condition2))
{
//condition = string.Format(" where Nationality in ({0})", condition.Substring(0, condition.Length - 1));
condition2 = string.Format(" AND GivenName in ({0})", condition2.Substring(0, condition2.Length - 1));
}
SqlCommand cmd = new SqlCommand(query + condition + condition2); using (SqlConnection con = new SqlConnection(conString))
{
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.Connection = con; sda.SelectCommand = cmd;
using (DataSet ds = new DataSet())
{
sda.Fill(ds);
GridView2.DataSource = ds;
GridView2.DataBind();
}
}
}
}
protected void Select_Nationality(object sender, EventArgs e)
{
this.BindGrid();
}
protected void Select_GivenName(object sender, EventArgs e)
{
foreach(ListItem item in CheckBoxList1.Items)
{
if(item.Selected == true)
{
this.BindGrid();
}
}
}
Я должен реализовать 8 списков флажок для фильтрации в GridView. Если любые другие простые методы для реализации, и я должен использовать отфильтрованные из 3 таблиц.
Каков ваш окончательный запрос? Перед тем, как выполнить его? Похож на '! String.IsNullOrEmpty (условие)' возвращает 'false', и вы пытаетесь добавить' AND ... 'часть без' WHERE'. –
Каковы результаты 'condition2.Substring (0, condition2.Length - 1)' ?? –
Я не уверен, что вы сделали обязательным, чтобы первое условие не могло быть нулевым, а условие2 не может быть задано с первым условием. Если это так, вам нужно, чтобы условие2 могло добавить AND в запрос, и условие FIrst будет пустым. –