数据库绑定到listbox上的一个很奇怪很奇怪很奇怪的问题!!!!!!!(winform)

时间:2022-09-22 00:29:31
DataSet newslist = guoxin.ShowNewsList("SELECT id,topic FROM [news]");
//newslist 获得结果成功 已验证!

listbox.DataSource = newslist.Tables[0].DefaultView;

listbox.DisplayMember = "topic";

listbox.ValueMember = "id";
//listbox显示也成功!

但是在点击listbox事件中我读取listbox.SelectedItems.ToString();
却得到了“System.Windows.Forms.ListBox+SelectedObjectCollection“这个字符串,而不是我点选的topic!!奇怪!!

还有当我的listbox初始化后默认选中的是第一行,这个时候listbox.SelectedValue.ToString()明明是该行捆绑的id(我把它放到一个label中看到的),但是如果把listbox.SelectedValue.ToString()作为参数代入SQL查询语句的id中,就会出错!而我如果写一个字符串的id比如“1816”,这样就没问题,事实上那个listbox.SelectedValue.ToString()的值就是“1816”,我已经确认!
不知道怎么回是啊!

6 个解决方案

#1


请教大家啊!

#2


不知道是怎么回事!

#3


SelectedItems.ToString() 得到的当然是System.Windows.Forms.ListBox+SelectedObjectCollection了,你要用SelectedItem.ToString();

至于你用ToString()取值做参数再查询会出错,无我估计可能是因为ToString()取得的值是在后面加上了空格“ ”的,好象SQLSever中自动把Char类型字段用空格添满。我在Delphi中也遇到过,我是用的Trim() 函数把空格给去掉后再使用的,但在VS.net中怎样解决我还没找到比较好的办法,希望其它朋友提示一下

#4


用这个listbox.SelectedItems.text获取你的选择

#5


我是用的是SelectedItem.ToString();
但是返回的变成了 system.data.datarowview


#6


我想你的SelectedItem.ToString()的调用者是不是弄错了,应该是ListBox.SelectedItem.ToString(),那是不会得到“System.data.datarowview”的。我估计你是用DataRow调用的

#1


请教大家啊!

#2


不知道是怎么回事!

#3


SelectedItems.ToString() 得到的当然是System.Windows.Forms.ListBox+SelectedObjectCollection了,你要用SelectedItem.ToString();

至于你用ToString()取值做参数再查询会出错,无我估计可能是因为ToString()取得的值是在后面加上了空格“ ”的,好象SQLSever中自动把Char类型字段用空格添满。我在Delphi中也遇到过,我是用的Trim() 函数把空格给去掉后再使用的,但在VS.net中怎样解决我还没找到比较好的办法,希望其它朋友提示一下

#4


用这个listbox.SelectedItems.text获取你的选择

#5


我是用的是SelectedItem.ToString();
但是返回的变成了 system.data.datarowview


#6


我想你的SelectedItem.ToString()的调用者是不是弄错了,应该是ListBox.SelectedItem.ToString(),那是不会得到“System.data.datarowview”的。我估计你是用DataRow调用的