Я хочу отфильтровать данные, используя два CheckBoxList, и результат должен быть показан в GridView. Мои данные хранятся в базе данных SQL Server. Я сделал какой-то код, но он не работает, когда я проверяю некоторые коробки, ничего не происходит. Вот мой кодфильтр с помощью checkboxlist
public partial class test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindList();
}
}
protected void gvDemo_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gvDemo.PageIndex = e.NewPageIndex;
BindList();
}
private void BindList()
{
string conString = ConfigurationManager.ConnectionStrings["YMMDMSConnectionString"].ConnectionString;
string query = "SELECT ID,Client,Projet,Date,Shift,CodDefaut FROM cascad";
string condition = string.Empty;
foreach (ListItem item in shift.Items)
{
condition += item.Selected ? string.Format("'{0}',", item.Value) : "";
}
if (!string.IsNullOrEmpty(condition))
{
condition = string.Format(" where Shift in ({0})", condition.Substring(0, condition.Length - 1));
}
string condition2 = string.Empty;
foreach (ListItem item in client.Items)
{
condition2 += item.Selected ? string.Format("'{0}',", item.Value) : "";
}
if (!string.IsNullOrEmpty(condition2))
{
condition2 = string.Format(" AND Client = {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);
gvDemo.DataSource = ds;
gvDemo.DataBind();
}
}
}
}
protected void shift_SelectedIndexChanged(object sender, EventArgs e)
{
BindList();
}
protected void client_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (ListItem item in shift.Items)
{
if (item.Selected == true)
{
BindList();
}
}
}
}
Что мне не хватает?
Когда вы отлаживаете это - потому что я предполагаю, что вы отлаживали это, конечно, - каков полный запрос SQL, который вы отправляете на сервер? –
Почему вы называете 'BindList' в цикле? Вам просто нужно позвонить ему один раз (при необходимости). –
У меня есть два ChechBoxList: shift & client, полный запрос: query + condition + condition2, и это зависит от того, какие поля я проверил – Lamyae