0

好吧,我们所有人都曾在某个时候为汽车或房屋买过橱窗!我们在那里使用的界面是我想要创建的!3 个下拉列表或文本框,用户可以在其中插入用于过滤搜索的信息

在此处输入图像描述

现在的问题是,我在网上搜索并找到了一些帮助/代码,但不知何故它完全不起作用。因为我需要的是,当页面加载时,所有数据都应显示在网格视图(或任何其他视图)中,然后当用户选择/输入他/她的信息并单击搜索时,视图必须根据这项研究

我尝试使用与注册学生相同的代码

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

有人可以帮我找到正确的代码/解决方案来做我想做的吗?我认为这将有助于很多未来的编码人员,因为我找不到任何符合我想要的东西......也许我不知道在哪里看,但我意识到在搜索类似的东西时涉及到很多变量这个。

4

2 回答 2

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
于 2012-10-19T07:01:19.280 回答
0

代替

   if (rd.HasRows)
    {
          rd.Read();
          GridView1.DataBind();
    }

请用

   if (rd.HasRows)
   {
         GridView1.DataSource=rd;
         GridView1.DataBind();
   }
于 2012-10-19T07:03:41.743 回答