下拉列表框:在powerbuilder中使下拉列表框可以和数据关联

  在从事使用powerbuilder进行数据库开发过程中,常常碰到要使用列表框来选择数据,但是普通下拉列表框并没有提供和数据相连接思路方法,而使用数据窗口子下拉列表框来代替又显得有些别扭.下面介绍种好看又好用思路方法.
  可能大家已经想到了吧,使用指针把要连接数据条地从select 语句查询结果中fetch 出来,然后再把数据additem到下拉列表框中去.
  虽然这也是种可行思路方法,但是他速度很不能令人满意,太受数据量影响.
  我们可以利用powerbuilder 最推崇数据窗口技术作为数据库和下拉列表框连接桥梁,这种思路方法即方便快速又安全可靠.
好了,下面制作下拉列表框,在完成的后会带给你许多意想不到方便!

. 打开powerbuilder"select user object"画笔,选择<>, 在" user object"中选择"Visual"类"Standard"项并按下<ok>, 在弹出来"Select Standard Visual Type"对话框中选择列表中 "dropdownlistbox"项并按下<ok>. 接着加入些例子变量,选择"Declare"菜单项"Instance Variables.."
加入变量声明: datastore ids_user il_row 并按下<ok>.
我们要对新对象进行些限制,在对象"constructor"事件中加入 :
sorted = false //这句非常必要
re

2. 好了,现在到了最关键时候了,我们要把数据检索出来放到ids_user
变量里.
选择菜单"Declare"项"User Object Function",在弹出来对话框
中按下<>新建个对象命名为:
init
参数有个:
sqlstr
返回值为整型:eger
现在我们需要动态地创建datastore
在init中写下:
//eger init(sqlstr ) 开始
long ll_rowcount
long ll_row
ls_sql
errors
ls_
ids_user = create datastore
//根据sql语句产生数据窗口
ls_ = sqlca.SyntaxFromSQL(sqlstr, 'style(type=grid)',errors)
//sql语句有
len(errors) > 0 then
messagebox('', errors)
-1
end
//根据语法动态创建数据窗口
ids_user.create(ls_)
ids_user.transobject(sqlca)
ll_rowcount = ids_user.retrieve
//无数据返回
ll_rowcount=0 then
-1
end
//把数据插入Control控件
for ll_row = 1 to ll_rowcount
this.additem((ids_user.Object.Data[ll_row,1]))
next
//成功返回0
0
//eger init(sqlstr ) 结束

现在下拉列表框已经能显示数据了,但是我们在选择数据同时往往
需要不是它显示出来值,比如显示是人员姓名,而我们需要
是工号,难道再使用select语句把需要数据检索出来吗?有了下面
,我们就不必头痛了.
重复上面建立步骤,新建个名为getdatauser object,
返回值为"any"并在中写下:
//any getdata 开始
any la_
long ll_row
text = '' then
''
end
//没有选择或没有检索到数据
ids_user.rowcount = 0 or il_row = 0 then
''
end
//在缺省情况下返回第 2列数据
la_ = ids_user.Object.data[il_row, 2]
la_
//andy getdata 结束

现在还不能返回正确数据,还需要idx(idx )
如下:
//idx(idx ) 开始
il_row = idx
//idx(idx ) 结束

现在这个user object已经完成了,我们来做下试验试试.
新建个应用app_test,个窗口w_,按照刚才思路方法创
个user object:uo_dbdropdownlistbox,放入w_
在app_testopen事件中写下连接数据库语句并加上open(w_)
在w_open事件中写下:
li_result
li_result = uo_1.init('select name, id from sysobjects')
在uo_1selectionchanged事件中写下:
idx(index)
messagebox('提示', "看" + (this.getdata))
这时我们用户对象已经能根据选择name返回相应id了.
至于更多功能,还有待powerbuilder爱好者们不断地研究
创造了.如果还想深入讨论请和我联系:[email protected]
Tags:  java下拉列表框 excel下拉列表框 下拉列表框样式 下拉列表框

延伸阅读

最新评论

发表评论