简单,winform下的comboBox的数据绑定问题 cmb1.DataSource=dataSet1.Tables[0];cmb1.DisplayMember="F_Name";为何comboBox里显示的是System.Data.DataRowView;谁能告诉我怎么回事?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的cmb1.DisplayMember字符可能有错误,确定是在Tables[0]中有的列才行.比如一个table有2列(c1,c2),则你想绑定第一列则cmb1.DisplayMember="c1";第二列则:cmb1.DisplayMember="c2";如果列名或列不存在,就是显示:System.Data.DataRowView. 没有错啊,我又检查了一下数据库中有F_Name这个字段而且我又换了几个字段试试也是这种情况 winform与webform区别很大的。传说有数据绑定可以。但是我试过不好使。我的做法时做一个类。public class ComboBoxItem { private string _text=null; private object _value=null; public string Text{get{return this._text;} set{this._text=value;}} public object Value{get {return this._value;} set{this._value=value;}} public override string ToString() { return this._text; } }然后绑定void BindLochus() { CMB_Lochus.Items.Clear(); OracleConnection conn=new OracleConnection(oracledb); conn.Open(); try { string sql=@"select Lochusid,Lochusname from Lochus where Departmentid="+((ComboBoxItem)CMB_Dep.SelectedItem).Value; OracleCommand cmd=new OracleCommand(sql,conn); OracleDataReader Reader=cmd.ExecuteReader(); while (Reader.Read()) { ComboBoxItem newItem = new ComboBoxItem(); newItem.Text = Reader["Lochusname"].ToString(); newItem.Value =Reader["Lochusid"].ToString(); CMB_Lochus.Items.Add(newItem); } Reader.Close(); } catch(Exception ex) {MessageBox.Show(ex.Message);} finally { conn.Close(); } }使用时private void button1_Click(object sender, System.EventArgs e) { OracleConnection conn=new OracleConnection(oracledb); conn.Open(); try { for (int i=0;i<LB_List.Items.Count;i++) { string sql=@"select t.cbdw||'-'||t.re3 from tbeventcomplain t where t.tsbh='"+LB_List.Items[i].ToString()+"'"; OracleCommand cmd=new OracleCommand(sql,conn); Object obj=cmd.ExecuteOracleScalar(); if(obj.ToString()!="11-20") { string add=LB_List.Items[i].ToString()+" "+obj.ToString()+"\r\n"; textBox1.Text=textBox1.Text+add; } progressBar1.Value=i; } } catch(Exception ex) {MessageBox.Show(ex.Message);} finally { conn.Close(); } MessageBox.Show("ok"); } 调试一下,看看dataSet1.Tables[0]到底有些什么东西. 不是看你数据库中有没有这个字段而是看你的DataSourse里填充进去了没有 是啊,请先测试是否数据被填充进去,如果是自己定义的datatable ,那么是否有给它增加数据?如果都做了,那么应该可以显示出数据,winform程序没有那么吓人吧,就这个还写个类吗??? 奇怪,调试的时候怎么显示的是: dataSet1.Tables[0] 错误:对象“dataSet1.Tables”没有索引器 不知道是怎么回事,用dataGrid1.dataSource=dataSet1.Tables[0]怎么就能正确显示 cmb1.DataSource=dataSet1.Tables[0];cmb1.DisplayMember="F_Name";cmb1.ValueMember = "F_Name"; 调试一下,看看dataSet1.Tables[0]到底有些什么东西._____________________________________________________调试了,dataSet1.Tables[0]里面很多东西,不知道该看哪一个? 头痛啊,谁能告诉我啊?已经确定有这个字段了"F_Name" 你在窗体加载时,加fill一下像:private void Form1_Load(object sender, System.EventArgs e) { sqlDataAdapter1.Fill(dataSet11); } 楼上的,好像不用Fill就行,原因可能:1.SQL语句是否可以正常查询.2.没有DisplayMember,ValueMember是否已全部绑定到可用值. 用这种方法试试comboBox1.DisplayMember=ds.Tables[0].Columns[2].ColumnName; windows下面:ComboBox1.DataSource = myDataSet ;//数据集ComboBox1.DisplayMember = "person.userId" ;//表名加字段名ComboBox1.ValueMember = "person.username" ;==============this.ComboBox2.DataSource = myDataTable;//数据表this.ComboBox2.DisplayMember = "Name";字段名 你需要在formload 事件里加一句sqlDataAdapter1.Fill(dataSet11); 加上这一句就可以了 几种可能:1.datatable没数据2.没有哪一列(不仅仅是数据库)如果你 select a as b from c那么你就没有a列了,而是b列了 我也是同样的问题,我是这么解决的this.comboBox1.SelectedIndexChanged -= new System.EventHandler(this.comboBox1_SelectedIndexChanged); 因为在窗体加载时,好像是自动执行一下comboBox1_SelectedIndexChanged的,所以,我先给取消一下 【winform】将Login窗口放到Main窗口前面 我对ACCESS进行数据更新的时候,出现“超出系统资源” C# 执行的一条SQL语句 看看怎么了?? C#如何使用C++的模板类? 请问一个常量变量的问题(急) 请问确如何在C#中实现类似QQ窗体自动隐藏的效果?? 我想问一下,导入数据前如何检查一下数据是否有问题? 请教高手帮忙 求教 怎么将 XML文件写入数据库类型为 clob 的字段中? 这个示例要怎么改? 我真的不知道该怎么办了!!!!
比如一个table有2列(c1,c2),则你想绑定第一列则
cmb1.DisplayMember="c1";
第二列则:cmb1.DisplayMember="c2";
如果列名或列不存在,就是显示:System.Data.DataRowView.
而且我又换了几个字段试试也是这种情况
我的做法时做一个类。
public class ComboBoxItem
{
private string _text=null;
private object _value=null;
public string Text{get{return this._text;} set{this._text=value;}}
public object Value{get {return this._value;} set{this._value=value;}}
public override string ToString()
{
return this._text;
}
}然后绑定
void BindLochus()
{
CMB_Lochus.Items.Clear();
OracleConnection conn=new OracleConnection(oracledb);
conn.Open();
try
{
string sql=@"select Lochusid,Lochusname from Lochus where Departmentid="+((ComboBoxItem)CMB_Dep.SelectedItem).Value;
OracleCommand cmd=new OracleCommand(sql,conn);
OracleDataReader Reader=cmd.ExecuteReader();
while (Reader.Read())
{
ComboBoxItem newItem = new ComboBoxItem();
newItem.Text = Reader["Lochusname"].ToString();
newItem.Value =Reader["Lochusid"].ToString();
CMB_Lochus.Items.Add(newItem);
}
Reader.Close();
}
catch(Exception ex)
{MessageBox.Show(ex.Message);}
finally
{
conn.Close();
}
}
使用时
private void button1_Click(object sender, System.EventArgs e)
{
OracleConnection conn=new OracleConnection(oracledb);
conn.Open();
try
{
for (int i=0;i<LB_List.Items.Count;i++)
{
string sql=@"select t.cbdw||'-'||t.re3 from tbeventcomplain t where t.tsbh='"+LB_List.Items[i].ToString()+"'";
OracleCommand cmd=new OracleCommand(sql,conn);
Object obj=cmd.ExecuteOracleScalar();
if(obj.ToString()!="11-20")
{
string add=LB_List.Items[i].ToString()+" "+obj.ToString()+"\r\n";
textBox1.Text=textBox1.Text+add;
}
progressBar1.Value=i;
}
}
catch(Exception ex)
{MessageBox.Show(ex.Message);}
finally
{
conn.Close();
}
MessageBox.Show("ok");
}
而是看你的DataSourse里填充进去了没有
如果都做了,那么应该可以显示出数据,winform程序没有那么吓人吧,就这个还写个类吗???
dataSet1.Tables[0] 错误:对象“dataSet1.Tables”没有索引器
不知道是怎么回事,用dataGrid1.dataSource=dataSet1.Tables[0]怎么就能正确显示
cmb1.DisplayMember="F_Name";
cmb1.ValueMember = "F_Name";
_____________________________________________________
调试了,dataSet1.Tables[0]里面很多东西,不知道该看哪一个?
像:
private void Form1_Load(object sender, System.EventArgs e)
{
sqlDataAdapter1.Fill(dataSet11);
}
1.SQL语句是否可以正常查询.
2.没有DisplayMember,ValueMember是否已全部绑定到可用值.
comboBox1.DisplayMember=ds.Tables[0].Columns[2].ColumnName;
ComboBox1.DataSource = myDataSet ;//数据集
ComboBox1.DisplayMember = "person.userId" ;//表名加字段名
ComboBox1.ValueMember = "person.username" ;
==============
this.ComboBox2.DataSource = myDataTable;//数据表
this.ComboBox2.DisplayMember = "Name";字段名