2012-03-28 123 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;