当前位置:编程学习 > C#/ASP.NET >>

C#combobox selectedvalue无法获取值

RT,绑定一张节点基础数据表,想要显示节点名称,实际使用节点编号
代码如下SqlDataAdapter da = new SqlDataAdapter(sql2, con);
            DataSet ds = new DataSet();
            da.Fill(ds, "节点基础数据");
            this.comboBox2.DisplayMember = "节点名称";    
            this.comboBox2.ValueMember = "节点编号";    
            this.comboBox2.DataSource = ds.Tables["节点基础数据"];
在使用comboBox2.SelectedValue获取int数据时总是报错,无法将类型为“System.Data.DataRowView”的对象强制转换为类型“System.IConvertible,恳请各位高手帮帮忙!!不胜感激 --------------------编程问答-------------------- 在使用comboBox2.SelectedValue获取int数据时总是报错,无法将类型为“System.Data.DataRowView”的对象强制转换为类型“System.IConvertible,恳请各位高手帮帮忙!!不胜感激
SelectedValue获取的是DataRow,再根据DataRow去数据

或者this.comboBox2.ValueMember = "节点编号"; 改为Tables中的字段名称 --------------------编程问答-------------------- this.comboBox2.ValueMember = "节点编号"; 改为字段名称 --------------------编程问答-------------------- this.comboBox2.DataSource = ds.Tables["0"]; --------------------编程问答-------------------- 加一个ds.Tables["节点基础数据"].DefaultView; 还有datasource应该放在前面。


--------------------编程问答-------------------- this.comboBox2.DataSource = ds.Tables[0]; --------------------编程问答--------------------
引用 5 楼 taomanman 的回复:
this.comboBox2.DataSource = ds.Tables[0];
这个方法没有用 --------------------编程问答--------------------
引用 4 楼 tsapi 的回复:
加一个ds.Tables["节点基础数据"].DefaultView; 还有datasource应该放在前面。
试过了,没有用,另外我发现如果在设计视图中直接选那个三角进行数据绑定就可以调试成功,写上面的代码就不行,不知道为什么 --------------------编程问答--------------------
引用 2 楼 xuexiaodong2009 的回复:
this.comboBox2.ValueMember = "节点编号"; 改为字段名称
节点编号本身就是数据库中的字段名称 --------------------编程问答--------------------   
  this.comboBox2.DataSource = ds.Tables["节点基础数据"];
 this.comboBox2.DisplayMember = "节点名称";   
  this.comboBox2.ValueMember = "节点编号"; 

应该先加数据源吧 --------------------编程问答-------------------- bool f=false;  定义一个变量
...Form1_Load(object sender, EventArgs e) //窗体加载事件
{
  SqlDataAdapter da = new SqlDataAdapter(sql2, con);
  DataSet ds = new DataSet();
  da.Fill(ds, "节点基础数据");
  this.comboBox2.DisplayMember = "节点名称";   
  this.comboBox2.ValueMember = "节点编号";   
  this.comboBox2.DataSource = ds.Tables["节点基础数据"];
  f=true;  //把变量赋为true;
}
int id=0;
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
   if (!f)
   {
       return;
   }
       id = Convert.ToInt32(comboBox2.SelectedValue);
}
你填充comboBox2的方法是对的,你只要定个变量就行了。试下吧 --------------------编程问答-------------------- this.comboBox2.DataSource = ds.Tables["节点基础数据"];
this.comboBox2.DisplayMember = "节点名称";   
this.comboBox2.ValueMember = "节点编号";   
先加载数据源,在绑定数据
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,