祛除断点后却看到textBox1中显示出了正确的id值。

要怎样才能得到这个id呢?

.NET Framework 版本是 1.1

asap
绑定ComboBox这样的Windows Form的时候,需要检查三样东西,即:DataSource, ValueMember, 和DisplayMember。SelectedValue的类型就是一个DataRowView类型,为了得到相应的值,必须将它强制转换为相应的数据的字段类型,才可以操作,例如:

((DataRowView)sourceName.SelectedValue).Row[sourceName.ValueMember].ToString()

你例子中的textbox也就是作了如上的隐含转换。

慕羿
绑定ComboBox这样的Windows Form的时候,需要检查三样东西,即:DataSource, ValueMember, 和DisplayMember。SelectedValue的类型就是一个DataRowView类型,为了得到相应的值,必须将它强制转换为相应的数据的字段类型,才可以操作,例如:

((DataRowView)sourceName.SelectedValue).Row[sourceName.ValueMember].ToString()

你例子中的textbox也就是作了如上的隐含转换。
还是不行,提示“指定的转换无效”。试了一下,是指的(DataRowView)sourceName.SelectedValue转换

此外,感觉SelectedValue的值应该不是DataRowView。否则textBox在进行隐式转换的时候就不知道该选择哪一个列了(我在调试的时候是先把值赋给了string变量然后再从变量中赋给textBox的)。

asap
(System.Data.DataRowView) ???

慕羿
(System.Data.DataRowView) ???
同样。

用((DataRowView)sourceName.SelectedValue).Row[sourceName.ValueMember].ToString()的时候出错信息是列不在表中,把sourceName.ValueMember换成实际的列名字符串就发生转换无效。跟踪了一下,在那时候sourceName.ValueMember居然会是空串。莫名其妙

找不出原因来,看来得要放弃这个方法了。

asap

edjia
直接tostring没有问题啊。
selectedvalue如果要转为datarowview类型的话转换无效。

慕羿
这样会产生编译错误:“object”并不包含对“Item”的定义

慕羿

edjia
SelectedItem是datarowview类型的吧。可以直接转换。
我这里使用selecteditem也没有问题。

慕羿
SelectedItem是datarowview类型的吧。可以直接转换。
我这里使用selecteditem也没有问题。
我是想达到在列表中显示名称供选择,然后直接通过SelectedValue取得相应的id值。看来没把这个东西弄懂,做不了。现在改用SelectedIndex来查表取出这个值,实现了。

谢谢二位,非常感谢。

asap
2. 在程序初始化中,事件SelectedValueChanged会被触发,而那时sourceName.SelectedValue尚没有值,故执行1中的语句会出问题。 解决的手段有很多,最直接的就是做一个判断,如:

if (sourceName.SelectedValue != null)
{
string tstr=sourceName.SelectedValue.ToString();
}

虽然不够严谨,但供调试程序是足够了。

在1,2两个条件满足后,程序可以顺利执行。

当然,就你的目的而言, 这个方法有点笨, 用SelectIndex简便多了。以上权作多一个思路吧。

Enjoy!

dodowolf
LoL Asap上班真早
我刚才业在研究者事情来着
放一个MSDN的Example在这里吧

_http://msdn.microsoft.com/library/en-us/dv_vstechart/html/vbtchnavigatingmultiplerelatedtablesinadonetdataset.asp

是关于多个DataSet之间的Navigation.

asap
LoL Asap上班真早
我刚才业在研究者事情来着
放一个MSDN的Example在这里吧

_http://msdn.microsoft.com/library/en-us/dv_vstechart/html/vbtchnavigatingmultiplerelatedtablesinadonetdataset.asp

是关于多个DataSet之间的Navigation.

1. 我不早, 你早。 :)
2. 谢谢那个例子。
3. 对ComboBox这样的Windows Form, 用SelectedIndexChanged比SelectedValueChanged来得普遍。

还是Borland的东东用得顺手。m$的东西后劲足啊。.NET总让人感觉有点怪,Andres这是“故意”向Java靠拢啊。

慕羿
{
int tid=(int)sourceName.SelectedValue;
textBox1.Text=tid.ToString();
}
}

为了隔离界面,我把DataSet的构建和管理放到了一个数据操作对象里进行。于是要用SelectedIndex来实现的话就必须在对象里多定义一个方法,而且多出了调用处理的过程,并不简单也不自然。现在这样实现要好多了。再次感谢 :)

相关文章: