DropDownList值不会改变

时间:2013-12-07 19:57:26

标签: c# asp.net sql

当我从DropDownList中选择任何值时,第一个值被选中。

代码的目的是每当我从DropDownList中选择一个值时,数据库中的相应值应该显示在TextBox中。

 protected void Page_Load(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection("connection string");
        con.Open();
        DataTable Seminars = new DataTable();
        SqlDataAdapter adapter = new SqlDataAdapter("SELECT SeminarName, ID  FROM SeminarData", con);
        adapter.Fill(Seminars);
        DropDownList1.DataSource = Seminars;
        DropDownList1.DataTextField = "SeminarName";
        DropDownList1.DataValueField = "SeminarName";
        DropDownList1.DataBind(); 
        con.Close();

    }

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection("connection string");
    con.Open();
    DataTable dt = new DataTable();
    SqlCommand sqlCmd = new SqlCommand("SELECT  SeminarNameE,TrainerName FROM SeminarData WHERE SeminarName='" + DropDownList1.SelectedItem.Value +"'", con);
    SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd);
    sqlDa.Fill(dt);

    if (dt.Rows.Count > 0)
    {
        TextBox1.Text = dt.Rows[0]["SeminarNameE"].ToString();
        TextBox2.Text = dt.Rows[0]["TrainerName"].ToString();
    }



}

1 个答案:

答案 0 :(得分:1)

用以下内容替换您的页面加载:

protected void Page_Load(object sender, EventArgs e)
{
  if (!Page.IsPostBack) {
    SqlConnection con = new SqlConnection("connection string");
    con.Open();
    DataTable Seminars = new DataTable();
    SqlDataAdapter adapter = new SqlDataAdapter("SELECT SeminarName, ID  FROM SeminarData", con);
    adapter.Fill(Seminars);
    DropDownList1.DataSource = Seminars;
    DropDownList1.DataTextField = "SeminarName";
    DropDownList1.DataValueField = "SeminarName";
    DropDownList1.DataBind(); 
    con.Close();
  }
}

它需要!Page.IsPostBack,因为每次绑定时,都会清除所有选择。在此代码中,它会绑定每个页面加载。添加!Page.IsPostback将确保它仅绑定第一个负载。