我有两个页面,一个是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
Location=@Location and
Experience=@Experience and
Title=@Title
or
Location=@Location
or
Experience=@Experience
or
Title=@Title
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.aspx -
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;
}
errors-过程或函数'search'需要参数'@Location',这是未提供的。
答案 0 :(得分:0)
您的查询字符串格式不正确,textloc.text应为“.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注入攻击的好方法。
答案 1 :(得分: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