我把DropDownLis绑定到某个数据源上,从数据库中读取某列数据并做为DropDownLis的下拉选项。
问提是不管我选择的是下拉框中第几个数据。它反回的都是下拉框的第一个数据。
例如:DropDownLis中有上海,长沙,北京选项,我下拉选择长沙,希望它返回直是长沙,可返回直是
上海,我选择北京,返回的也是上海!
我用C#写的。DropDownLis动态绑定代码是:string sqlstring ="select name,age from table1 ";
SqlConnection MyConnection=new qlConnection("server=IP地址/实例名;database=数据库名称;Trusted_Connection=yes");
SqlCommand MyCommand = new SqlCommand(sqlstring, MyConnection);
MyConnection.Open();
SqlDataReader dr = MyCommand.ExecuteReader();
DropDownList4.DataSource = dr;
DropDownList4.DataTextField = "表中字段名称";
DropDownList4.DataBind();
MyConnection.Close();
大侠给段c#代码帮我解决这个问题!谢!

解决方案 »

  1.   

    我也遇到过楼主的那种情况,
    但我改成这样就没有问题了
    while(dr.Read())
    {
    DropDownlist4.Items.Add(new ListItem(dr["BigClass_name"].ToString(),dr["BigClass_id"].ToString()));
    }
      

  2.   

    if(!Page.IsPostBack)
    {
         //ToDo:绑定数据
    }
    要不然每次PostBack后会重新绑定,一次就会每次都返回第一个值了
      

  3.   

    同意楼上的看法,另外还要注意要将DropDownList控件的AutoPostBack属性设置为false,否则每次选择后都要提交服务器(除非需要这样)
      

  4.   

    if (!Page.IsPostBack)
    {
       数据绑定写在这里
    }
      

  5.   

    private void Page_Load(object sender, System.EventArgs e)
    {

    if(!IsPostBack)
    {
    OleDbConnection cn=new OleDbConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
    cn.Open();
    string sql="select distinct Mi_EquipId from Rcm_MalInflu";
    OleDbCommand cm=new OleDbCommand(sql,cn);
    OleDbDataReader dr=cm.ExecuteReader();

    while(dr.Read())
    {
    ddl_equip.Items.Add(new ListItem(dr["Mi_EquipId"].ToString(),dr["Mi_EquipId"].ToString()));
    }
    cn.Close();

    }
    }==============================================
    private void ddl_equip_SelectedIndexChanged_1(object sender, System.EventArgs e)
    {

    if(ddl_equip.SelectedIndex!=0)
    { Label1.Text=ddl_equip.SelectedItem.Text;
    }
    else
    {
    Label1.Text="0";
    }
    try
    {
    DataBd();
    }
    catch
    {
    RegisterStartupScript("alert","<script language=javascript>window.alert('无记录或者出错!');</script>");
    }

    }
      

  6.   

    你要在SelectedIndexChanged事件里写选择的代码
     
    点击下拉菜单并选择选项事件才触发!
      

  7.   

    看完这几篇文章,你应该能解决问题了:
    http://blog.csdn.net/kgdiwss/archive/2005/06/15/395070.aspx
    http://blog.csdn.net/kgdiwss/archive/2005/06/23/400995.aspx
    http://blog.csdn.net/kgdiwss/archive/2005/06/23/401320.aspx
      

  8.   

    if(!IsPostBack){
            //在此绑定你的数据
    }
    private void dropdownlist1_SelectedIndexChanged(object sender, System.EventArgs e){
            Response.write(dropdownlist1.SelectedTest);
    }
      

  9.   

    >>DropDownList4.DataTextField = "表中字段名称";有了TextField ValueField呢? 
    值是由ValueField表示的呀
      

  10.   

    呵呵.
    回发引起的了.这样:
    If (!IsPostBack){
    //绑定数据.
    string sqlstring ="select name,age from table1 ";
    SqlConnection MyConnection=new qlConnection("server=IP地址/实例名;database=数据库名称;Trusted_Connection=yes");
    SqlCommand MyCommand = new SqlCommand(sqlstring, MyConnection);
    MyConnection.Open();
    SqlDataReader dr = MyCommand.ExecuteReader();
    DropDownList4.DataSource = dr;
    DropDownList4.DataTextField = "表中字段名称";
    DropDownList4.DataBind();
    MyConnection.Close();
    }