数据窗口中的下拉窗口

(一) 如何建立下拉数窗  
    下面以一例子说明。  
    譬如我想在数窗dw_subj中输入课程编号subj_id时能显示编号与名称就需先建立一子窗dw_subjchild,里面包含两列(subj_id与subj_name)。然后,右击dw_subj中的subj_id,选择"properties.../edit/style/ dropdowndw",在其弹出框中的"datawindow"中选择dw_subjchild数窗;在"display   column"选择要显示的列subj_id;在"data   window"选实际存储的列subj_id(此处为同一列)。最后,再设置其显示宽度及显示列数以能看到全部。结果见图一(g1.jpg)。  
  (二) 如何在下拉数窗中进行检索  
    仍举例说明。假若现要输入院系及专业进行查询,那么在输入院系名称后,希望专业一列的下拉数窗能根据院系名称进行检索以减少显示项数。通常,我们的第一反应就是在子数窗中设计检索参数。但,且慢!此法只会弹出系统检索框要求用户输入检索值而不能在程序中传递参数给它。怎办?这就得用到子数窗(datawindowchild)了。请看下面的代码:  
    string   ls_sql,ls_name  
    datawindowchild   child   file://定义一个子数据窗口变量  
    file://dw_1为父数窗,dept_special为具有下拉数窗编辑方式的列  
    dw_1.getchild("dept_special",child)//生成一个对子数窗对象的引用  
    child.settransobject(sqlca)//将子数窗对象与事物对象相关连  
    ls_name=dw_1.getitemstring(1,2)//获取用户输入的院系名称  
    file://对dw_1child根据dept_name进行检索的sql语句,由于此处不能在数窗中设置检索file://参数,只能用sql语句  
    ls_sql="select   dept_special,dept_name   from   tbl_dept   where   &  
    dept_name='"+ls_name+"'"  
    child.setsqlselect(ls_sql)  
    child.retrieve()//子数窗应用sql语句进行检索  
    至此,对子数窗进行检索就完成了,结果见图二(g2.jpg)。  
  (三) 如何避免重复值  
    在子数窗应用中还常遇见如下问题:检索出来的数项有重复。如何去掉重复值?这比较简单,只需在上述代码中sql语句里的select后加上distint参数即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在PowerBuilder,可以使用数据窗口对象来实现下拉列表功能。下面是一种常见的实现方法: 1. 首先,创建一个数据窗口对象,并在该对象添加一个下拉列表控件。可以在数据窗口的“编辑”选项选择“添加控件”,然后在弹出的对话框选择下拉列表控件。 2. 在添加下拉列表控件后,可以通过修改该控件的属性来设置下拉列表的选项。可以在控件的属性列表找到“下拉数据窗口”的属性,然后选择一个数据窗口对象作为下拉列表的数据源。 3. 在下拉数据窗口,可以定义下拉列表的选项。可以添加一个或多个数据窗口列来表示下拉列表的选项,然后在这些列填写相应的选项。 4. 完成上述设置后,可以在代码使用数据窗口对象和下拉列表控件来实现下拉列表功能。可以使用数据窗口对象的`dw_1.SetTransObject(SQLCA)`方法来设置数据窗口对象的事务对象,然后使用`dw_1.Retrieve()`方法来检索下拉列表的选项。 5. 在使用下拉列表时,可以通过调用下拉列表控件的`dw_1.GetSelectedText()`方法来获取用户选择的选项。可以将该选项保存到变量,以便在后续的逻辑使用。 这种方式利用数据窗口对象实现下拉列表功能,可以方便地管理和维护下拉列表的选项,并且具有良好的可扩展性和可重用性。此外,PowerBuilder还提供了其他方式来实现下拉列表功能,例如使用下拉列表框控件或自定义绘图控件等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值