2014-01-28 85 views
0

我有两个页面,一个search.aspx和show.aspx在search.aspx显示搜索数据时,搜索按钮点击

我有2个文本框,位置,标题1个下拉列表,经验

现在,当人点击搜索按钮,如果人已经比GridView控件显示填充的位置该位置的所有数据,如果人填补这两个位置,标题比它应该显示的位置和标题的这两个条件的数据,如果人补全文本框,下拉列表比它应该显示与该位置的标题和经验

数据现在,因为我有GridView控件在另一页,所以我所有的文本框,下拉值转移到另一个页面通过查询字符串,但它没有显示任何数据

和搜索另一个这样应该怎样存储过程?

我做了类似

存储程序 - (错了,但它实际上应该是什么?)

ALTER PROCEDURE search 

(
@Location nvarchar(50), 
@Experience nvarchar(50), 
@Title nvarchar(50) 
) 


AS 
select * from Jobs where 
[email protected] and 
[email protected] and 
[email protected] 
or 
[email protected] 
or 
[email protected] 
or 
[email protected] 

search.aspx-

protected void imgbtnsubmit_Click(object sender, ImageClickEventArgs e) 
{ 
    Response.Redirect("show.aspx?loc,title,exp="+textloc.text+txttitle.Text+dropdownlistexperience.SelectedItem); 

} 
在show.aspx页

,它这需要在查询字符串该值并显示在grdview

show.as perticular数据PX-

protected void Page_Load(object sender, EventArgs e) 
{ 

    if (!IsPostBack) 
    { 
     dal.location = Request.QueryString["loc"]; 
     dal.title = Request.QueryString["title"]; 
     dal.exerience = Request.QueryString["exp"]; 
     GridView1.DataSource = bal.search(dal); 
     GridView1.DataBind(); 
    } 
} 

bal-

public DataTable search(portalDal dal) 
{ 

    con.Open(); 
    cmd = new SqlCommand("search", con); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Parameters.AddWithValue("@Location", dal.location); 
    cmd.Parameters.AddWithValue("@Experience", dal.experience); 
    cmd.Parameters.AddWithValue("@Title", dal.title); 
    DataTable dt = new DataTable(); 
    SqlDataAdapter da = new SqlDataAdapter(cmd); 
    da.Fill(dt); 
    con.Close(); 
    return dt; 
} 

错误 - 过程或函数 '搜索' 预计参数 '@location',但未提供。

+0

我觉得..in搜索页 –

+0

你没有错保护无效imgbtnsubmit_Click(对象发件人,ImageClickEventArgs E) { 的Response.Redirect( “?show.aspx LOC,标题,EXP =” + textloc.text + txttitle.Text + dropdownlistexperience.SelectedItem); }看到的差异textloc.text + txttitle.Text textloc.text是小写,它应该是txtloc.Text –

回答

0

您的查询字符串的格式不正确,你的textloc.text应该是“文本”

protected void imgbtnsubmit_Click(object sender, ImageClickEventArgs e) 
    { 
     Response.Redirect(string.Format("show.aspx?loc={0}&title={1}&exp={1}", textloc.Text, txttitle.Text, dropdownlistexperience.SelectedItem)); 
    } 

顺便说一句,这是一个伟大的方式来获得一个SQL注入攻击。

+0

对不起,我写了txtloc.text这里没有复制和粘贴,这就是为什么它很小,顺便说一句,应该是另一种方式避免sql注入? – vikas

+0

如果您打算使用查询字符串,在将它们放入存储过程之前,确实需要检查或擦除输入,请查阅本文。网络上有一些机器人正在寻找SQL注入点。 http://msdn.microsoft.com/en-us/library/ff647397.aspx – Tony

+0

谢谢@Tony,这个查询字符串formate工作,我会检查出这 – vikas

0
In Search Page You did mistake.. 
     protected void imgbtnsubmit_Click(object sender, ImageClickEventArgs e) 
      { 
      Response.Redirect("show.aspx?loc,title,exp="+**textloc.text**+txttitle.Text+dropdownlistexperience.SelectedItem); 
      } 

txtloc.text ...应该是txtloc.Text

+0

感谢amol,但我在这里编辑我的问题,所以拼写错误,但问题是查询字符串格式 – vikas

相关问题