2012-03-28 13 views
1

Ich habe daran gearbeitet, seit jemand mir beibringt, Gridview zu verwenden, um mein Suchergebnis anzuzeigen.Suche und Anzeige in Rasteransicht

Mein Problem ist, ich kann es nicht einmal funktionieren lassen, wenn ich auf den Suchknopf klicke oder drücke, passiert nichts. Ich habe:

-1 Textbox für Nachname -2 Dropdownlist für die Provinz und Stadt -und eine Suche (Trigger) Taste

Hier ist, was ich bisher getan habe:

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()); 
    } 
} 

Ich bin neu hier, bitte hilf mir. Vielen Dank!

+0

Warum fügen Sie Parameter erneut hinzu. Sie haben bereits 'comm.Parameters.AddWithValue (" @ pcode ", ddlProvince.SelectedValue) hinzugefügt;' – JayOnDotNet

+0

Wird das Ereignis btnSearch_Click ausgelöst? Kannst du dort einen Haltepunkt setzen, um zu sehen? Ihr aspx Code würde auch helfen. –

Antwort

1

Sie verwenden nicht die Feldzeichenfolgenvariable, die Sie an übergeben, und Sie verwalten Ihre SQL-Parameter falsch (denselben Parameter zweimal hinzufügen und ein DropDown-Objekt als Parameterwert zuweisen).

Sie fügen den gleichen Parameter zweimal hinzu.

Um dies zu beheben, entfernen Sie diese Zeile: comm.Parameters.AddWithValue("@pcode", ddlProvince.SelectedValue);

Sie sind die Feldvariable nicht verwenden.

Um dies zu beheben, diese Zeile ändern

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

zu

param.Value = field; 

in Ihrer BindGridView Funktion.