以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  ComboBox 如何绑定使用sqlcommand 查询出来的表  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=133087)

--  作者:jeeter
--  发布时间:2019/4/6 12:01:00
--  ComboBox 如何绑定使用sqlcommand 查询出来的表
发现DataSource 是String类型的   无法绑定

那要怎么样绑定? 

Dim cmd As new SQLCommand("test_db")
cmd.CommandText="selec t id,name from pcs_pro"
Dim dt As DataTable = cmd.ExecuteScalar()

Dim cb As WinForm.ComboBox = e.Form.Controls("ComboBox1")
cb.DataSource=dt
cb.ValueMember="id"
cb.DisplayMember="name"

--  作者:有点蓝
--  发布时间:2019/4/6 12:05:00
--  
无法绑定,只能这样用

Dim cb As WinForm.ComboBox = e.Form.Controls("ComboBox1")
cb.ComboList = dt.GetComboListString("id")

--  作者:jeeter
--  发布时间:2019/4/6 12:09:00
--  
id 是一窜数字   谁看得懂啊   晕
--  作者:有点蓝
--  发布时间:2019/4/6 13:56:00
--  
那就要做自定义下拉窗口了:http://www.foxtable.com/webhelp/scr/2466.htm
--  作者:jeeter
--  发布时间:2019/4/6 14:06:00
--  
只能先这样了   为了一个小功能  就得去设计一个窗口   晕
--  作者:有点蓝
--  发布时间:2019/4/6 14:33:00
--  
可以做一个通用的下拉窗口,如果碰到同样的问题就可以重用了
--  作者:chnfo
--  发布时间:2019/4/6 20:44:00
--  
你既然想下拉显示name,那意思很明显,name是不重复的。
做一个窗口下拉,还有其它的麻烦。
1、下拉窗口的高度是固定的,下拉即使只有一条,也显示得比较高
2、下拉窗口还要设一堆代码,维护起来也挺麻烦的


如果用GetComboListString,只有一点不爽,就是下拉列表最多只有6行,如果行数较多,是用滚动条。
本来以前也建议过,最好能显示出10行左右的,但没有回复

Dim cb As WinForm.ComboBox = e.Form.Controls("ComboBox1")
cb.ComboList = dt.GetComboListString("name")

如果要读取选定的行对应的ID,可以用
dim dr as datarow = dt.find("Name = \'" & cb.value & "\'")
if dr isnot nothing then 
output.show(dr("ID"))
end if 
[此贴子已经被作者于2019/4/6 20:47:02编辑过]

--  作者:jeeter
--  发布时间:2019/4/6 21:12:00
--  
name 在数据库中不是唯一的   有重复   

selec t id,name from pcs_pro   这里我where 条件没写出来   where userid =@userid

如果是唯一的话  这个问题不存在


要不然就是  得在你的这个方法上   再过滤用户    
[此贴子已经被作者于2019/4/6 21:13:34编辑过]

--  作者:有点甜
--  发布时间:2019/4/7 9:46:00
--  

那你就用querybuilder吧,如

 

http://www.foxtable.com/webhelp/scr/0695.htm