【发布时间】:2012-08-11 03:33:51
【问题描述】:
我有一个问题让我陷入困境,我无法找到任何解决方案,非常需要你的帮助:实际上我需要在员工表上进行某种搜索,就像我需要搜索所有员工一样是女性或拥有博士学位等,我为此创建了一个函数,该函数使用 if 条件查询员工表,并且此搜索的结果出现在允许分页为 true 的网格视图中,问题是每当我单击下一步转到其他页面在gridview中,它会进行完整的回发并再次绑定到gridview数据源,并且当我为gridview数据源提供以下函数(DetailedSearch)时,当它进入该函数时,它会从第一个if条件开始读取,而无需转到特定的if条件,然后它抛出异常对象引用未设置为对象的实例
这是我的代码(只是其中的一部分,不是完整代码):
public DataTable DetailedSearch()
{
con.Open();
SqlDataAdapter da=new SqlDataAdapter();
if (FirstName != string.Empty)
{
if (FirstName != string.Empty && LastName != "--Letters--")
{
da = new SqlDataAdapter("select * from employee where firstname ='" + FirstName.ToString() + "'"+"and lastname like '"+LastName.ToString()+"%'", con);
}
else if(FirstName!=string.Empty && Gender!="{Please Select}")
{
da = new SqlDataAdapter("select * from employee where firstname ='" + FirstName.ToString() + "'" + "and gender='" + Gender.ToString() + "'", con);
}
else if(FirstName!=string.Empty && MaritalStatus!="{Please Select}")
{
da = new SqlDataAdapter("select * from employee where firstname ='" + FirstName.ToString() + "'" + "and maritalstatus='" + MaritalStatus.ToString() + "'", con);
}
else if(FirstName!=string.Empty && Qualification!="{Please Select}")
{
da = new SqlDataAdapter("select * from employee where firstname ='" + FirstName.ToString() + "'" + "and qualification='" + Qualification.ToString() + "'", con);
}
else if(FirstName!=string.Empty && GraduationDate!=DateTime.MinValue)
{
da = new SqlDataAdapter("select * from employee where firstname ='" + FirstName.ToString() + "'" + "and graduationdate='" + GraduationDate.ToString() + "'", con);
}
else if(FirstName!=string.Empty && Province!="{Please Select}")
{
da = new SqlDataAdapter("select * from employee where firstname ='" + FirstName.ToString() + "'" + "and province='" + Province.ToString() + "'", con);
}
else if(FirstName!=string.Empty && LastEmployer!=string.Empty)
{
da = new SqlDataAdapter("select * from employee where firstname ='" + FirstName.ToString() + "'" + "and lastemployer='" + LastEmployer.ToString() + "'", con);
}
else if(FirstName!=string.Empty && EnteredBy!="{Please Select}")
{
da = new SqlDataAdapter("select * from employee where firstname ='" + FirstName.ToString() + "'" + "and enteredby='" + EnteredBy.ToString() + "'", con);
}
else if (FirstName != string.Empty && DateEntered != DateTime.MinValue)
{
da = new SqlDataAdapter("select * from employee where firstname ='" + FirstName.ToString() + "'" + "and dateentered='" + DateEntered.ToString() + "'", con);
}
else
{
da = new SqlDataAdapter("select * from employee where firstname ='" + FirstName.ToString() + "'", con);
}
}
else if (LastName != "--Letters--")
{
if (LastName != "--Letters--" && Province != "{Please Select}")
{
da = new SqlDataAdapter("select * from employee where lastname like'" + LastName.ToString() + "%'" + "and province='" + Province.ToString() + "'", con);
}
else if (Gender != "{Please Select}" && LastName != "--Letters--")
{
da = new SqlDataAdapter("select * from employee where gender='" + Gender.ToString() + "'" + "and lastname like '" + LastName.ToString() + "%'", con);
}
DataTable dt = new DataTable();
da.Fill(dt);
con.Close();
return dt;
}
请帮我弄清楚该怎么做,因为我完全空白并且没有逻辑出现在我的脑海中,我必须放置 if 子句,因为根据搜索,查询可能不一样,但是如何让 gridview 分页意识到这一点:(
提前致谢
【问题讨论】:
-
在哪一行抛出异常?