2011-08-09 84 views
2

我有一个搜索文本框和一个搜索按钮,单击时显示具有以下名称和性别的网格。但是,我已将该页面重定向到edit.Now上的另一个页面当我从该页面到包含gridview的页面我想再次显示相同的搜索。我已成功将检索到的信息存储到会话中,但我无法呼叫我的btn_click事件@ page_Load。在page_load上调用button_click asp.net

这里有一个片段:

编辑:我已经在我的代码

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Session["Redirected"] != null) 
    { 
     if (Session["FirstName"] != null) 
      txtSearch.Text = Session["FirstName"].ToString(); 
     if (Session["Gender"] != null) 
      ddlGen.SelectedValue = Session["Gender"].ToString(); 
     btnSearch_Click(sender, e); 
    } 

    if (!Page.IsPostBack) 
    { 
     BindGrid(); 
    } 
} 

作了一些修改和这里的单击事件:

protected void btnSearch_Click(object sender, EventArgs e) 
{ 
    string query = "Select EmployeeId,FirstName,Password,Address,sex,Deptno,act_book,actTV,DOJ,isActiveYN from employees where 1=1"; 

    if (txtSearch.Text != "") 
    { 
     query += " and FirstName like '%" + txtSearch.Text + "%'"; 
     Session["FirstName"] = txtSearch.Text; 
    } 
    if (ddlGen.SelectedValue != "") 
    { 
     query += " and sex='" + ddlGen.SelectedValue.ToUpper() + "'"; 
     Session["Gender"] = ddlGen.SelectedValue; 
    } 


    DataSet ds = new DataSet("Employees"); 
    SqlConnection con = new SqlConnection("Password=admin;User ID=admin;Initial Catalog=asptest;Data Source=dbsvr"); 
    SqlDataAdapter da = new SqlDataAdapter(query, con);    


    da.Fill(ds); 
    gvSession.DataSource = ds; 
    gvSession.DataBind(); 


} 

现在我能保存搜索,以便问题得到解决,但另一个已经强化了,当我在changin文本之后单击按钮搜索时,它将我带回到较旧的搜索中。 ason可能是因为会话没有被清除,但我也是这样处理了textchangedselectedindexchanged eventd。

+2

请注意搜索文本 - 它看起来很容易受到SQL注入攻击,但是如果用户非恶意地包含撇号,也会失败。 –

+0

我知道it.I'rllfy它,这只是测试code.Thanks – Pavitar

回答

1

您应该重置会话重定向变量,因此它不会在同一案件下降。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Session["Redirected"] != null) 
    { 
     Session["Redirected"] = null; 
     .... 
+0

谢谢你。问题解决:) – Pavitar

0

您可以创建一个函数,它将从button_click和page_load中调用。

1

当页面返回到主页面时,可以使用QueryString参数表,然后在这里您可以检查QueryString参数表是否存在。在这里你可以绑定电网实现代码

if (Request.QueryString["Back"]!= null) 
{ 
    // Your bind grid function 
} 
2

而不是试图从Page_Load打电话给你的按钮单击处理程序,改变你的按钮单击处理程序只需拨打喜欢另一种方法:

protected void btnSearch_Click(object sender, EventArgs e) 
{ 
    RunSearch(); 
} 

然后将所有您btnSearch_Click()代码为RunSearch()

然后在你的Page_Load,你可以这样做:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Session["Gender"] != null && Session["FirstName"] != null) 
    { 
     txtSearch.Text = Session["FirstName"].ToString(); 
     ddlGen.SelectedValue = Session["Gender"].ToString(); 
     RunSearch(); 
    } 

    if (!Page.IsPostBack) 
    { 
     BindGrid(); 

    } 
} 

在附注上,我会建议您查看SQLCommand Parameters。您的代码很容易出现SQL Injection Attacks

http://en.wikipedia.org/wiki/SQL_injection