2011-08-09 81 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