2015-09-09 37 views
-1

我有一個頁面,我使用它的搜索,我想在點擊按鈕後將網格視圖傳遞到結果頁面? 這個按鈕是搜索按鈕,這個代碼在default.aspx.cs中工作沒有問題,但是當我刪除了網格並將其放入results.aspx中,我在最後3行中有錯誤。 default.aspx.cs將gridview傳遞到另一個頁面ASP.net

protected void Button1_Click(object sender, EventArgs e) 
    { 
     string searchby; 
     searchby = DropDownList1.SelectedItem.Text; 
     string str = string.Empty; 
    switch (searchby)  { 
     case "Search By": 
      str = "select * from UserInfo u inner join TeamDB T on U.EMC_ID = T.EMC_ID where u.Name like '%' + @search + '%'"; 
       break; 
     case "EMC ID": 
      int searchID = int.Parse(TextBox1.Text); 

      str = "select U.EMC_ID, Name, Email, CiscoPhone ,T.Department ,T.TeamName , T.ManagerName, T.ManagerID from UserInfo U inner join TeamDB T on U.EMC_ID = T.EMC_ID where U.EMC_ID =" + searchID; 
      break; 
     case "Name": 
      str = "select EMC_ID, Name, Email, CiscoPhone from UserInfo where Name like '%' + @search + '%'"; 
      break; 
     case "Email": 
      str = "select EMC_ID, Name, Email, CiscoPhone from UserInfo where Email like '%' + @search + '%'"; 
      break; 
     case "Provider": 
      str = "select EMC_ID, Name, Email, CiscoPhone, Provider ,DataSIM, DataLineNumber, Data_IMEA from UserInfo where Provider like '%' + @search + '%'"; 
      break; 
     case "USB Data Sim": 
      Int64 searchSIM = Int64.Parse(TextBox1.Text); 
      str = "select EMC_ID, Name, Email, CiscoPhone, Provider ,DataSIM, DataLineNumber, Data_IMEA from UserInfo where DataSIM =" + searchSIM; 
      break; 
     case "USB Data line Number": 
      Int64 searchLine = Int64.Parse(TextBox1.Text); 
      str = "select EMC_ID, Name, Email, CiscoPhone, Provider ,DataSIM, DataLineNumber, Data_IMEA from UserInfo where DataLineNumber =" + searchLine; 
      break; 
     case "USB Data IMEA": 
      Int64 searchIMEA = Int64.Parse(TextBox1.Text); 
      str = "select EMC_ID, Name, Email, CiscoPhone, Provider ,DataSIM, DataLineNumber, Data_IMEA from UserInfo where Data_IMEA =" + searchIMEA; 

      break; 
     case "Cisco Phone": 
      int searchcisco = int.Parse(TextBox1.Text); 
      str = "select EMC_ID, Name, Email, CiscoPhone from UserInfo where CiscoPhone =" + searchcisco; 

      break; 
     case "Team Name": 
      str = "select U.EMC_ID, U.Name, T.TeamName, T.ManagerID, T.ManagerName from UserInfo u inner join TeamDB T on U.EMC_ID = T.EMC_ID where T.TeamName like '%' + @search + '%'"; 
      break; 

     default: 
      Console.WriteLine("Please make a selection!"); 
      break; 
    } 
     SqlCommand xp = new SqlCommand(str, did); 
     xp.Parameters.Add("@search", SqlDbType.NVarChar).Value = TextBox1.Text; 

     did.Open(); 
     xp.ExecuteNonQuery(); 
     SqlDataAdapter da = new SqlDataAdapter(); 
     da.SelectCommand = xp; 
     DataSet ds = new DataSet(); 
     da.Fill(ds, "EMC_ID"); 
     GridView1.DataSource = ds; 
     GridView1.DataBind(); 
     GridView1.Visible = true; 
    } 

我想重定向這些代碼在一個新的頁面是Results.aspx

+1

什麼是錯誤? – thewisegod

+0

我得到了str和textbox1.text中的另一個錯誤protected void Page_Load(object sender,EventArgs e) {SqlCommand xp = new SqlCommand(str,did); xp.Parameters.Add(「@ search」,SqlDbType.NVarChar).Value = TextBox1.Text; did.Open(); xp.ExecuteNonQuery(); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = xp; DataSet ds = new DataSet(); da.Fill(ds,「EMC_ID」); GridView1.DataSource = ds; GridView1.DataBind(); GridView1.Visible = true; } –

+0

告訴我們,當你沒有說出那個錯誤或原始錯誤是什麼時,你得到「另一個錯誤」並不是很有用。 – mason

回答

1

希望實現搜索,並且有結果顯示在搜索頁上打開?然後解決方案是不通過GridView(無論如何,因爲它是一個UI元素),而是傳遞搜索查詢,並在結果頁面上執行搜索。它最終應該是這樣的:

搜索頁面

protected void SearchBtn_Click(object sender, EventArgs e) 
{ 
    Response.Redirect(String.Format("~/Results.aspx?search={0}", 
     Server.UrlEncode(SearchTB.Text)); 
} 

結果頁面

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     //run the query, bind results to GridView 
    } 
} 

如果你想要一個更好的用戶界面,您的搜索和結果顯示都應該上完成一個頁面,您應該使用AJAX將搜索條件發送到結果並返回。

相關問題