2012-03-28 60 views
1

我一直在努力,因爲有人教我使用gridview來顯示我的搜索結果。搜索和顯示在gridview

我的問題是,我甚至無法使它工作,當我點擊或點擊搜索按鈕時,什麼也沒有發生。我有:

-1文本框的姓氏 -2下拉列表爲省,市 - 和搜索(觸發)按鈕

這是我到目前爲止已經完成:

public partial class Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      string constring = ConfigurationManager.ConnectionStrings["AccreString"].ConnectionString; 
      SqlConnection conn = new SqlConnection(constring); 
      DataTable dt = new DataTable("emed_province"); 

      using (conn) 
      { 
       conn.Open(); 
       SqlCommand comm = new SqlCommand("SELECT * FROM emed_province ORDER BY PROVINCE_NAME ASC", conn); 
       SqlDataAdapter adptr = new SqlDataAdapter(comm); 
       adptr.Fill(dt); 
      } 

      ddlProvince.DataSource = dt; 
      ddlProvince.DataTextField = "PROVINCE_NAME"; 
      ddlProvince.DataValueField = "PROVINCE_CODE"; 
      ddlProvince.DataBind(); 
     } 
    } 

    protected void ddlProvince_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     string constring = ConfigurationManager.ConnectionStrings["AccreString"].ConnectionString; 
     SqlConnection conn = new SqlConnection(constring); 
     DataTable dt = new DataTable("emed_province"); 

     using (conn) 
     { 
      conn.Open(); 
      SqlCommand comm = new SqlCommand("SELECT * FROM emed_city WHERE PROVINCE_CODE [email protected]", conn); 
      comm.Parameters.AddWithValue("@pcode", ddlProvince.SelectedValue); 
      SqlDataAdapter adptr = new SqlDataAdapter(comm); 
      adptr.Fill(dt); 

      SqlParameter param = new SqlParameter(); 
      param.ParameterName = "@pcode"; 
      param.Value = ddlProvince; 

      comm.Parameters.Add(param); 
     } 

     ddlCity.DataSource = dt; 
     ddlCity.DataTextField = "CITY_NAME"; 
     ddlCity.DataValueField = "CITY_CODE"; 
     ddlCity.DataBind(); 
    } 

    private void BindGridView(string field) 
    { 


     DataTable dt = new DataTable(); 
     string constring = ConfigurationManager.ConnectionStrings["AccreString"].ConnectionString; 
     SqlConnection conn = new SqlConnection(constring); 

     try 
     { 
      conn.Open(); 
      SqlCommand comm = new SqlCommand("SELECT * FROM emed_accredited_providers WHERE DOCTOR_CODE [email protected]", conn); 
      comm.Parameters.AddWithValue("@pcode", ddlProvince.SelectedValue); 
      SqlDataAdapter adptr = new SqlDataAdapter(comm); 
      adptr.Fill(dt); 

      SqlParameter param = new SqlParameter(); 
      param.ParameterName = "@pcode"; 
      param.Value = ddlProvince; 

      comm.Parameters.Add(param); 

      if (dt.Rows.Count > 0) 
      { 
       GridView1.DataSource = dt; 
       GridView1.DataBind(); 
      } 
      else 
      { 
      } 
      // NO RECORDS FOUND 
     } 
     catch (System.Data.SqlClient.SqlException ex) 
     { 
      string msg = "Fetch Error:"; 

      msg += ex.Message; 
      throw new Exception(msg); 
     } 
     finally 
     { 
      conn.Close(); 
     } 
    } 


    protected void btnSearch_Click(object sender, EventArgs e) 
    { 
     BindGridView(txtName.Text.Trim()); 
    } 
} 

我是新來的,請協助我。謝謝!

+0

爲什麼要再次添加參數。您已經在這裏添加了'comm.Parameters.AddWithValue(「@ pcode」,ddlProvince.SelectedValue);' – JayOnDotNet 2012-03-28 07:10:23

+0

btnSearch_Click事件是否會觸發?你能在那裏放一個斷點嗎?你的aspx代碼也會有幫助。 – 2012-03-28 17:38:02

回答

1

您沒有使用您傳遞給BindGridView的字段字符串變量,而且您管理錯誤的SQL參數(兩次添加相同的參數並將DropDown對象分配爲參數值)。

您正在兩次添加相同的參數。

爲了解決這個問題,刪除此行:comm.Parameters.AddWithValue("@pcode", ddlProvince.SelectedValue);

您沒有使用字段變量。

要解決這個問題,在您的BindGridView功能這一行

param.Value = ddlProvince; // Note: You are assigning a dropdown OBJECT as the value here! 

改變

param.Value = field;