窗体上有一个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();
}
}
}
但是,当我单击按钮时,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();
}
}
}
解决方案 »
- 如何判断文本框输入的内容被修改?
- 急!sql远程连接问题
- winform 所有操作写入日志表
- 已经可见的窗体不能显示为模式对话框.在调用 showDialog 之前应将窗体的 Visible
- 使用NET2008发布程序时,怎样设置可以提高客户安装的速度
- vs2003报错:未能找到引用的组件“Microsoft.ApplicationBlocks.Data”。
- 在html里,如何生成像C#中的TabStrip控件?急帮!
- 多线程锁定方法求助
- 【请问】控制台Console.WriteLine("hello");没有效果
- 如何才能序列化一个继承类?????(很痛苦啊)
- 如何实现Tree的动态加载??
- C#中如果发生异常了,怎么自动显示出自定义异常?
#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(); }
label1.Text = comboBox1.SelectedValue.ToString(); 为什么这不能用的呢?
第一次回答就对了 呵呵 谢谢
一般选项分为Text属性和Value属性两项,你没有设定value属性绑到哪,
所以写comboBox1.SelectedValue.ToString()就表现为控件的选项类型
修改方法:
1.可以在
comboBox1.DisplayMember = "classname"; 之后添加代码:
comboBox1.ValueMember = "classname";
或者
2.
修改label1.Text = comboBox1.SelectedValue.ToString(); 为
label1.Text = comboBox1.SelectedText;
你这句也写错了 ↑
comboBox1.DataSource = ds.Tables["db_Class"];只所以会出现你这情况,因为返回的值是空,你没有给他赋值。要用SelectedValue就需要设置
↓
comboBox1.ValueMember = "classname"; 这个你没写,程序返回的就只有一个类型名称字符串.
修改方法:
1.可以在
comboBox1.DisplayMember = "classname"; 之后添加代码:
comboBox1.ValueMember = "classname";
或者
2.
修改label1.Text = comboBox1.SelectedItem.text..ToString()…
而且啊 DisplayMember 和 ValueMember 一般绑定2个不同的列
相同就没有意义了我是小菜鸟! 说的不好清见谅, 希望能够帮到你!
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;