以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  ListItemFormat事件如何动态生成?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=2039)

--  作者:菜鸟foxtable
--  发布时间:2009/3/6 17:36:00
--  ListItemFormat事件如何动态生成?

ComboBox控件列表项目用下面代码动态生成....
Dim dt As DataTable
cmd.CommandText = "select 床位,姓名 From [H_ZYXX] where 结算日期 is null and 出院日期 is not null"
dt = cmd.ExecuteReader()
e.form.Controls("ComboBox1").Combolist = dt.GetComboListString("床位")


如果直接在其ListItemFormat事件中设置好象不起作用...请问如何用代码生成ListItemFormat事件中想实现的效果?


ListItemFormat

如果列表项目来自于数据表,此事件将在生成每一个列表项目时执行。

e参数属性:

Form:      触发事件的窗口
Sender:    触发事件的控件
ListItem:  准备显示的行,DataRow类型
Value:     列表项目准备显示的内容

示例

列表项目来自于数据表时,下拉的列表项目只能显示一列的内容,如果希望显示多列内容,可以通过事件ListItemFormat来实现。
例如某个ComboBox的列表项目来自于客户表,取值列为客户编号,显示列为客户名称,在默认情况下下拉列表只显示客户名称,选择某客户后,自动填入对应的客户编号。
如果希望下拉列表同时显示客户编号和客户名称两列的内容,可以在ListItemFormat事件中设置如下代码:

e.Value = e.ListItem("客户编号") & "|" & e.ListItem("客户名称")

 


 

[此贴子已经被作者于2009-3-6 17:38:36编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/3/6 17:50:00
--  
下面的代码,应该放在窗口的AfterLoad事件中:

Dim dt As DataTable
cmd.CommandText = "select 床位,姓名 From [H_ZYXX] where 结算日期 is null and 出院日期 is not null"
dt = cmd.ExecuteReader()
e.form.Controls("ComboBox1").Combolist = dt.GetComboListString("床位")

--  作者:菜鸟foxtable
--  发布时间:2009/3/6 17:53:00
--  
我就是放在AfterLoad事件中啊....那e.Value = e.ListItem("床位") & "|" & e.ListItem("姓名")为何不起作用?

那个事件不能用代码实现吗?


比如:e.form.Controls("ComboBox1").ListItemFormat = ...........................
[此贴子已经被作者于2009-3-6 17:56:07编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/3/6 17:57:00
--  
这一部分应该放在ListItemFormat事件中:
e.Value = e.ListItem(
"客户编号") & "|" & e.ListItem("客户名称")

两部分代码的作用完全不同,要分开的。

--  作者:jiskin
--  发布时间:2014/6/21 16:22:00
--  
这个问题跟我遇到的一样,在窗口的afterload中定义的dt和赋值后
在控件的ListItemFormat事件中设置后根本无法实现
有没有办法解决?