上代码:private void fillAutolist()
    {
        lstName.Items.Clear();        //定义一个sql语句
        //该sql语句将从Client表中检索三个字段信息:ClientID、ClientName、AddressStr
        string selectSql = "select ClientID,ClientName,AddressStr from OrderClient";        //定义Ado.net对象
        SqlConnection con = new SqlConnection(myConn);
        SqlCommand cmd = new SqlCommand(selectSql, con);
        SqlDataReader reader;        //打开数据库连接并读取信息        try
        {
            con.Open();
            reader = cmd.ExecuteReader();
            //对于每一条记录,将ClientName、和AddressStr字段连接成一个字符串
            //以作为下拉列表框中列表项的显示文本
            //并将该列表项的Value属性设置为该记录唯一的ID值
            while (reader.Read())
            {
                ListItem newItem = new ListItem();
                newItem.Text = reader["ClientName"] + "," + reader["AddressStr"];
                newItem.Value = reader["ClientID"].ToString();
                lstName.Items.Add(newItem);
                
            }
            reader.Close();
            lblResults.Text= (lstName.SelectedItem.Value);
        }
        catch (Exception err)
        {
            lblResults.Text = "Error reading list of names";
            lblResults.Text = err.Message;
        }
        finally
        {
            con.Close();
        }
    }想让lblResult动态显示所选择的Droplist选项的ID却显示不了,只能显示一开始选择的那个默认的选项~?

解决方案 »

  1.   

    你每次都重新绑定dropDownList,肯定选的是第一个了,你在DropDownList的SelecedChange事件里面写lblResults.Text= (lstName.SelectedItem.Value);
      

  2.   

    你这是给下拉框赋值 。赋完值所选的当然就是默认的第一个 。
    设置 AutoPostBack="true" 
            onselectedindexchanged="你的方法"
    然后 lblResults.Text= (lstName.SelectedItem.Value);
      

  3.   

    private void fillAutolist()
      {
      lstName.Items.Clear();if(!IsPostBack)
    {
    lstName.SelectedIndexChanged += new EventHandler(lstName_SelectedIndexChanged);
    lstName.AutoPostBack = true;
    }
    ....
    }
    void lstName_SelectedIndexChanged(object sender, EventArgs e)
            {
                lblResults.Text= (lstName.SelectedItem.Value);        }
      

  4.   


    谢谢你!~上面那个问题用你的方法解决了 主要还是想问一下我把选择的选项动态显示在lblResult中时,抛出异常‘= ’附近出现错误 就是下面 reader附近出错了 这是为什么呢?(下面的代码和上面的是连着的……)protected void lstName_SelectedIndexChanged(object sender, EventArgs e)
        {
            //创建一个SQl语句,根据所选列表项VALUE属性所指定的ID,查询匹配记录
            string selectSQL;
            selectSQL = "select * from OrderClient";
            selectSQL += "where ClientID='" + lstName.SelectedItem.Value + "'";

            SqlConnection con = new SqlConnection(myConn);
            SqlCommand cmd = new SqlCommand(selectSQL, con);
            SqlDataReader reader;        try
            {
                con.Open();
                reader = cmd.ExecuteReader();

                reader.Read();            //使用检索到的记录构造一个字符串,并将该信息显示在一个Label控件中
                StringBuilder sb = new StringBuilder();            sb.Append(reader["ClientName"]);
                sb.Append(",");
                sb.Append(reader["AddressStr"]);
                sb.Append(",");
                sb.Append(reader["PostCode"]);
                sb.Append(",");
                sb.Append(reader["Telephone"]);
                sb.Append(",");
                sb.Append(reader["Email"]);
                lblResults.Text = sb.ToString();            reader.Close();
            }
            catch (Exception err)
            {
                lblResults.Text = "错误啦!";
                lblResults.Text += err.Message;
            }
            finally
            {
                con.Close();
            }
            lblResults.Text= (lstName.SelectedItem.Value);
        }
      

  5.   

    其实你从数据库里面获取下拉项的代码不用写在SelectChange事件里面,写在页面的加载事件里面就可以了,
    没必要每次选择一次就重新绑定一次,
    主要把  lblResults.Text= (lstName.SelectedItem.Value);这一行写在SelectedChange里面就可以了,
      

  6.   


    我重新上了一段代码 再帮我看看 谢谢……lblResults.Text= (lstName.SelectedItem.Value)我只是为了看看所选择的ID是否正确~ 我上面重新上了一段代码 还有问题~!就是显示选择的ClientID的详细信息在lblResults里面……
      

  7.   

    selectSQL += "where ClientID='" + lstName.SelectedItem.Value + "'";可能是你的SQL语句拼的有问题,selectSQL = "select * from OrderClient where ClientID='" + lstName.SelectedItem.Value + "'";
      

  8.   

    selectSQL = "select * from OrderClient";
    selectSQL += "where ClientID='" + lstName.SelectedItem.Value + "'";原因是你OrderClient和where 中间没有空格,组合在一起就成OrderClientwhere ClientID....
      

  9.   

    原来如此啊~这是教材的一个例子!注意看了一下OrderClient后面它还真有个空格符 ,呵呵……新手,还请多多指教!!!