ListBox中值的选定问题,在线等,谢谢!
我将数据集帮定到LISTBOX,但是,若我想选择其中的数据,怎么老是出错呢?以下是代码:
string strQuery = @"SELECT CASE_ID,TD_ID FROM T_TDDA WHERE CASE_ID LIKE 'td030724_'";
DataSet ds = dataOpera.Get_DataSet(strQuery,"GYTDSYZ");
lsbWaitPrint.DataSource = ds.Tables["GYTDSYZ"];
lsbWaitPrint.DisplayMember = "TD_ID";
lsbWaitPrint.ValueMember = "CASE_ID";
lsbWaitPrint.SetSelected(0,true);
int iIndex = lsbWaitPrint.SelectedIndex;
string strSelected = lsbWaitPrint.Items[iIndex].ToString();
每次strSelected的值都是System.Data.DataRowView。我想获取显示的值,怎么做?谢谢!
问题点数:20、回复次数:11Top
1 楼myhomeland(kk)回复于 2005-04-03 14:32:53 得分 4
用 string strSelected = lsbWaitPrint.SelectedItem.ToString()
Top
2 楼jhpu2000(石头)回复于 2005-04-03 14:58:00 得分 0
不行的,我试过,效果一样。
其实,
int iIndex = lsbWaitPrint.SelectedIndex;
string strSelected = lsbWaitPrint.Items[iIndex].ToString();
和
string strSelected = lsbWaitPrint.SelectedItem.ToString();
效果是一样的,都是获取被选定的值。
关键是,帮定的数据源是DataSet,若数据源是ArrayList,就不会有这种问题了。
若在进行帮定的时候,没有lsbWaitPrint.DisplayMember = "TD_ID";这条语句,ListBox中显示的就是System.Data.DataRowView,而且数据集有几行,就显示几行,所以后面出现被选中的值是System.Data.DataRowView也有一定的道理。
现在,我要的结果是,strSelected值是在ListBox中显示的值。
还是谢谢 myhomeland(kk) 兄的回答。Top
3 楼yuqi508(毛路)回复于 2005-04-03 15:11:22 得分 4
lsbWaitPrint.DataSource = ds.Tables["GYTDSYZ"];
lsbWaitPrint.DisplayMember = "TD_ID";
lsbWaitPrint.ValueMember = "CASE_ID";
lsbWaitPrint.DataBindings.Add("SelectedValue",ds,"要插入的字段");Top
4 楼myhomeland(kk)回复于 2005-04-03 15:18:08 得分 0
呵呵,再试试
用 string strSelected = lsbWaitPrint.SelectedItem["TD_ID"].ToString()
TD_ID 为你要显示的内容
如果再不行的话把
lsbWaitPrint.DisplayMember = "TD_ID";
lsbWaitPrint.ValueMember = "CASE_ID";
换一下,设为
lsbWaitPrint.DisplayMember = "CASE_ID";
lsbWaitPrint.ValueMember = "TD_ID";
string strSelected = lsbWaitPrint.SelectValue.ToString();Top
5 楼jhpu2000(石头)回复于 2005-04-03 15:48:20 得分 0
呵呵,myhomeland(kk) 你的方法还是有问题,lsbWaitPrint.SelectedItem返回是object类型,后面不可能也不可以有[]。
yuqi508(于奇) 的方法我没有明白,后面那个[”要插入的字段“]是指向数据集ds中表的列名么?其实我想显示的就是 列”TD_ID“,但是好象不行哦,报告错误如下:
[未处理的“System.ArgumentException”类型的异常出现在 system.windows.forms.dll 中。
其他信息: 无法绑定到 DataSource 的属性或列 TD_ID]
谢谢二位。
yuqi508(于奇) ,你能帮帮我吗?
Top
6 楼jhpu2000(石头)回复于 2005-04-03 16:32:12 得分 0
呵呵,string strSelected = lsbWaitPrint.SelectValue.ToString();
选择的是 lsbWaitPrint.ValueMember, 因为TD_ID不唯一,CASE_ID是唯一的。
恩,基本上能凑合,试试先
谢谢 myhomeland(kk) 啦. ^-^Top
7 楼DarkSchneider(知我者谓我心忧,不知我者谓我何求)回复于 2005-04-03 16:44:04 得分 3
试试这样行不行:
string strSelected = ((ListBox) sender).SelectedItem.ToString();Top
8 楼hyj_828(水梦)回复于 2005-04-03 17:38:07 得分 2
upTop
9 楼dunao([別人騎馬,俺騎驢,比上不足,比下有余])回复于 2005-04-03 19:01:33 得分 3
string strSelected = lsbWaitPrint.Text;
即可取得所選 的值!
Top
10 楼zhaojiang(不会飞的鱼)回复于 2005-04-03 19:09:48 得分 4
楼主,你的这个问题我知道。^_^
前几天我正是被这个问题搞得头大。今天不经意在试COMBOBOX的时候突然发现原因了。原来是在事件SELECTEDINDEXCHANGE事件里没加判断。
你在里面加一个判断,看DISPLAYMEMBER是否为“”, 如果不是取得的就是你要的值,否则就是SYSTEM。DATA。DATAROW。
还不明白就加我QQ吧。QQ说方便些。
QQ:46668884 加的时候注明来意。Top
11 楼yuqi508(毛路)回复于 2005-04-06 22:54:53 得分 0
lsbWaitPrint.DataSource = ds.Tables["GYTDSYZ"];
lsbWaitPrint.DisplayMember = "TD_ID";
lsbWaitPrint.ValueMember = "CASE_ID";
lsbWaitPrint.DataBindings.Add("SelectedValue",ds,"要插入的字段");
ValueMember设置的子段是将被selectedValue 属性所绑顶的字段Top




