Foxtable(狐表)用户栏目专家坐堂 → ComboBox 如何绑定使用sqlcommand 查询出来的表


  共有2773人关注过本帖树形打印复制链接

主题:ComboBox 如何绑定使用sqlcommand 查询出来的表

帅哥哟,离线,有人找我吗?
jeeter
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:99 积分:1694 威望:0 精华:0 注册:2017/3/30 14:00:00
ComboBox 如何绑定使用sqlcommand 查询出来的表  发帖心情 Post By:2019/4/6 12:01:00 [只看该作者]

发现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"

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106097 积分:539590 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/6 12:05:00 [只看该作者]

无法绑定,只能这样用

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

 回到顶部
帅哥哟,离线,有人找我吗?
jeeter
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:99 积分:1694 威望:0 精华:0 注册:2017/3/30 14:00:00
  发帖心情 Post By:2019/4/6 12:09:00 [只看该作者]

id 是一窜数字   谁看得懂啊   晕

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106097 积分:539590 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/6 13:56:00 [只看该作者]

那就要做自定义下拉窗口了:http://www.foxtable.com/webhelp/scr/2466.htm

 回到顶部
帅哥哟,离线,有人找我吗?
jeeter
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:99 积分:1694 威望:0 精华:0 注册:2017/3/30 14:00:00
  发帖心情 Post By:2019/4/6 14:06:00 [只看该作者]

只能先这样了   为了一个小功能  就得去设计一个窗口   晕

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106097 积分:539590 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/4/6 14:33:00 [只看该作者]

可以做一个通用的下拉窗口,如果碰到同样的问题就可以重用了

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2191 积分:18001 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By: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
  8楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:99 积分:1694 威望:0 精华:0 注册:2017/3/30 14:00:00
  发帖心情 Post By:2019/4/6 21:12:00 [只看该作者]

name 在数据库中不是唯一的   有重复   

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

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


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

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/4/7 9:46:00 [只看该作者]

那你就用querybuilder吧,如

 

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

 

 


 回到顶部