帮助中有下面这三样东西:能否再灵活一些?
Dim cmd As New SQLCommand
Dim dt As DataTable
Dim cmb As WinForm.ComboBox
cmd.CommandText = "SELECT DISTINCT 客户 From {订单}"
dt = cmd.ExecuteReader()
cmb = e.Form.Controls("ComboBox1")
cmb.ComboList= dt.GetComboListString("客户")
1、GetComboListString能否取两列的值?比如:
dt.GetComboListString("客户" & "公司")
======================================================================
Dim cmb As WinForm.ComboBox
cmb = Forms("窗口1").Controls("ComboBox1")
cmb.DisplayMember = "客户名称" '设置显示列
cmb.ValueMember = "客户编号" '设置取值列
cmb.DataSource= "客户"
2、cmb.DataSource 能否直接引用外部数据而不必加载进来?比如:
Dim cmd As New SQLCommand
cmd.Connecti
cmd.CommandText = "SELECT DISTINCT 客户 From {订单}"
dt = cmd.ExecuteReader()
.....
....
cmb.DataSource= dt
=======================================================================
ListItemFormat
如果列表项目来自于数据表,此事件将在生成每一个列表项目时执行。
e参数属性:
Form: 触发事件的窗口
Sender: 触发事件的控件
ListItem: 准备显示的行,DataRow类型
Value: 列表项目准备显示的内容
示例
列表项目来自于数据表时,下拉的列表项目只能显示一列的内容,如果希望显示多列内容,可以通过事件ListItemFormat来实现。
例如某个ComboBox的列表项目来自于客户表,取值列为客户编号,显示列为客户名称,在默认情况下下拉列表只显示客户名称,选择某客户后,自动填入对应的客户编号。
如果希望下拉列表同时显示客户编号和客户名称两列的内容,可以在ListItemFormat事件中设置如下代码:
e.Value = e.ListItem("客户编号") & "|" & e.ListItem("客户名称")
上面这个事件动态加载外部表能玩吗?