2

在这里,我尝试根据复选框列表中的选择来绑定网格视图。执行时我只得到空白页。任何人都可以指定错误是什么?

protected void Button1_Click(object sender, EventArgs e)
{
String query = "Select Proj_id,Proj_name,Front_end,Back_end from Proj_details where Front_end = 'Android'";
String[] frontend ={ "Android", "Asp", "Asp.net", "C#.net", "J2EE", "Java", "Matlab", "NS2", "PHP", "VB", "VB.net" };
try
{
for (int i = 0; i <= CheckBoxList1.Items.Count; i++)
{
if (CheckBoxList1.Items[i].Selected)
query = query.Insert(query.Length, frontend[i] + "','");
}

con.Open();
query = query.Remove(query.Length - 1);
query = query.Remove(query.Length - 1);
query = query.Insert(query.Length, ")");
SqlDataAdapter sqlada = new SqlDataAdapter(query, con);
DataSet ds = new DataSet();
sqlada.Fill(ds, "Proj_details");


gv_search_project.DataSource = ds.Tables[0];
gv_search_project.DataBind();



}
catch (Exception ex)
{

}
finally
{

Label1.Text = query.ToString();
}

} 
4

3 回答 3

2

您将在这里退出数组:

for (int i = 0; i <= CheckBoxList1.Items.Count; i++)
{
   if (CheckBoxList1.Items[i].Selected)
      query = query.Insert(query.Length, frontend[i] + "','");
}

您需要更换:

i <= CheckBoxList1.Items.Count

和:

i < CheckBoxList1.Items.Count
于 2012-08-16T13:08:26.497 回答
0
gv_search_project.DataSource = ds.Tables["Proj_details"];
于 2012-08-16T12:59:43.437 回答
0

您正在通过附加其他Front_end值来构建查询,但是您要附加到的基本查询具有如下的 where 子句:

where Front_end = 'Android'

所以(如果我正确阅读了您的代码)结果查询是(例如):

Select Proj_id,Proj_name,Front_end,Back_end 
from Proj_details 
where Front_end = 'Android'Android','C#.net','Matlab','VB')

从查询开始,我只是打破了。其次,我认为你的意图是有一个IN条款:

String query = "Select Proj_id,Proj_name,Front_end,Back_end from Proj_details where Front_end in ('Android','";

这一点,再加上Amiram Korach关于<vs的注释<=应该可以使代码正常工作。但它总是会包含“Android”(您最初的尝试也是如此)。

一定要改变你的空catch子句:

catch (Exception ex)               
{               

}

如果您没有吞下所有异常,您可能会自己发现问题。

于 2012-08-16T13:13:56.097 回答