多个条件组合进行搜索,代码量可能比较多、杂,所以可以在判断条件的时候,将参数值保存,最后进行字符串拼接,传到DAL层。
大概有这回事,现在杨老师的课也只是听明白而已了,前面已经有很多节课程没有实践敲写代码了,功课落下了,以后需要了再补,现在没有信心去操作了。。。
List<string> whereList = new List<string>();
List<SqlParameter> paramsList = new List<SqlParameter>();
if (cbSearchByName.IsChecked==true)
{
whereList.Add("Name=@Name");
paramsList.Add(new SqlParameter("@Name",txtName.Text));
}
if (cbSearchByInDate.IsChecked == true)
{
whereList.Add("InDate>=@InDateStart and InDate<=@InDateEnd");
paramsList.Add(new SqlParameter("@InDateStart",dpInDateStart.SelectedDate));
paramsList.Add(new SqlParameter("@InDateEnd", dpInDateEnd.SelectedDate));
}
if (cbSearchByDept.IsChecked == true)
{
whereList.Add("DepartmentId=@DepartmentId");
paramsList.Add(new SqlParameter("@DepartmentId",cmbDept.SelectedValue));
}
string whereSql = string.Join(" and ", whereList);
string sql = "select * from T_Employee";
if (whereSql.Length > 0)
{
sql = sql + " where " + whereSql;
}
Employee[] result = new EmployeeDAL().Search(sql, paramsList);
datagrid.ItemsSource = result;