窗体上有一个comboBox,一个label和一个button。我把数据库中的班级名称字段绑定到combobox中,当单击按钮时,label中显示选中的班级名称。
但是,当我单击按钮时,label中出现的是"System.Data.DataRowview"为什么呢  ????代码如下
namespace WindowsApplication2
{
    public partial class Form1 : Form
    {
        OleDbConnection conn = new OleDbConnection("Data source=Math&PhysicsStudents.mdb;Provider=Microsoft.Jet.OLEDB.4.0;");
        DataSet ds;
        OleDbDataAdapter ole_da;
        public Form1()
        {
            InitializeComponent();
        }        private void Form1_Load(object sender, EventArgs e)
        {
            //班级的绑定!
            ds = new DataSet();
            conn.Open();
            ole_da = new OleDbDataAdapter("select classname from db_Class", conn);
            ole_da.Fill(ds,"db_Class");
            comboBox1.DataSource = ds.Tables["db_Class"].DefaultView;
            //comboBox2.DataBindings();
            comboBox1.DisplayMember = "classname";
            conn.Close();
            //comboBox1.Dispose();
        }        private void button1_Click(object sender, EventArgs e)
        {
            //为什么这时绑定的时候label处出现的不是班级名称 而是 System.Data.DataRowview  为什么的呢???
            label1.Text = comboBox1.SelectedValue.ToString();
        }
    }
}

解决方案 »

  1.   

    label1.Text = comboBox1.Text
      

  2.   


            #region  数据绑定ComboBox控件
            private void ComboBoxDataBind()
            {
                ds = new DataSet(); 
                conn.Open(); 
                ole_da = new OleDbDataAdapter("select classname from db_Class", conn); 
                ole_da.Fill(ds,"db_Class"); 
                comboBox1.DataSource = dsMAX.Tables[0];
                comboBox1.DisplayMember = "classname";
                comboBox1.ValueMember = "classname";
                conn.Close();         }
      

  3.   

    伙计 睡了吗?  谢谢你  但是我还想知道为什么是这样的呢  原理是什么呢??我的
    label1.Text = comboBox1.SelectedValue.ToString();   为什么这不能用的呢?
    第一次回答就对了  呵呵  谢谢
      

  4.   

    代码comboBox1.DisplayMember = "classname"; 使得comboBox的选项显示为classname字段
    一般选项分为Text属性和Value属性两项,你没有设定value属性绑到哪,
    所以写comboBox1.SelectedValue.ToString()就表现为控件的选项类型
    修改方法:
    1.可以在
    comboBox1.DisplayMember = "classname"; 之后添加代码:
    comboBox1.ValueMember = "classname";
    或者
    2.
    修改label1.Text = comboBox1.SelectedValue.ToString(); 为
    label1.Text = comboBox1.SelectedText; 
      

  5.   

    comboBox1.DataSource = ds.Tables["db_Class"].DefaultView; 
    你这句也写错了  ↑
    comboBox1.DataSource = ds.Tables["db_Class"];只所以会出现你这情况,因为返回的值是空,你没有给他赋值。要用SelectedValue就需要设置

    comboBox1.ValueMember = "classname"; 这个你没写,程序返回的就只有一个类型名称字符串.
      

  6.   

    你的SelectedValue没绑,所以没有了,可以给它绑上,也可以写SelectedText或者直接写Text也行呀
      

  7.   

    comboBox1.DisplayMember = "classname"; 使得comboBox的选项显示为classname字段 
    修改方法: 
    1.可以在 
    comboBox1.DisplayMember = "classname"; 之后添加代码: 
    comboBox1.ValueMember = "classname"; 
    或者 
    2. 
    修改label1.Text = comboBox1.SelectedItem.text..ToString()…
      

  8.   

    这是因为  绑定的时候 就出错了LZ断点 跟一下  就知道把什么给绑上了
    而且啊   DisplayMember 和 ValueMember  一般绑定2个不同的列
    相同就没有意义了我是小菜鸟!   说的不好清见谅,   希望能够帮到你!
      

  9.   

    因为绑定的时候没有VALUE值啊!所以你selectvalue当然没法显示啊!
      

  10.   

     #region  数据绑定ComboBox控件 
            private void ComboBoxDataBind() 
            { 
                ds = new DataSet(); 
                conn.Open(); 
                ole_da = new OleDbDataAdapter("select classname from db_Class", conn); 
                ole_da.Fill(ds,"db_Class"); 
                comboBox1.DataSource = dsMAX.Tables[0]; 
                comboBox1.DisplayMember = "classname"; 
                comboBox1.ValueMember = "classname"; 
                conn.Close();         }
    lable改成这样:
    label1.Text = comboBox1.SelectedText;