好的,我们所有人都在某个时刻完成了购买汽车或房屋的窗户!我想在那里使用的界面我想创建! 3个下拉列表或文本框,用户可以在其中插入将用于过滤搜索的信息
现在的问题是,我在网上搜索并找到了一些帮助/代码,但不知何故它完全不起作用。因为我需要的是,当页面加载时,所有数据都应该显示在gridview(或任何其他视图)中,然后当用户选择/输入他/她的信息并单击搜索时,视图必须根据有搜索
我尝试使用与注册学生相同的代码
protected void btnSearch_Click(object sender, EventArgs e)
{
string strcon = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\VC_temps.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
SqlConnection con = new SqlConnection(strcon);
SqlCommand com = new SqlCommand("Search_student", con);
com.CommandType = CommandType.StoredProcedure;
SqlParameter p1 = new SqlParameter("Course", DropDownList1.SelectedValue);
SqlParameter p2 = new SqlParameter("Availability", DropDownList2.SelectedValue);
SqlParameter p3 = new SqlParameter("JobSkill", DropDownList3.SelectedValue);
com.Parameters.Add(p1);
com.Parameters.Add(p2);
com.Parameters.Add(p3);
con.Open();
SqlDataReader rd = com.ExecuteReader();
if (rd.HasRows)
{
GridView1.DataSource = rd;
GridView1.DataBind();
}
}
使用以下存储过程
ALTER PROCEDURE Search_student
(
@Course varchar(30),
@Availability varchar(50),
@JobSkill varchar(50)
)
AS
SELECT * FROM Student
WHERE Course = @Course OR Availability = @Availability OR JobSkill=@JobSkill
有人可以帮我找到合适的代码/解决方案,让它做到我想要的吗?我认为这将有助于很多未来的程序员,因为我找不到任何符合我想要的东西......也许我不知道在哪里看,但我意识到有很多变量涉及到搜索类似的东西此
答案 0 :(得分:0)
更改存储过程如下,这可以解决您的问题...当您使用多个参数进行搜索时,请始终使用以下方式编写搜索查询...
ALTER PROCEDURE Search_student
(
@Course varchar(30),
@Availability varchar(50),
@JobSkill varchar(50)
)
AS
Begin
SELECT * FROM Student
WHERE Course =isnull(@Course,Course)
and Availability =isnull(@Availability,Availability)
and JobSkill=isnull(@JobSkill,JobSkill)
End
答案 1 :(得分:0)
而不是
if (rd.HasRows)
{
rd.Read();
GridView1.DataBind();
}
请使用
if (rd.HasRows)
{
GridView1.DataSource=rd;
GridView1.DataBind();
}