在PowerBuilder(PB)应用开发中,数据窗口对象是与数据库交互的核心组件之一,它提供了一种可视化的方式来操作数据库中的数据,而参数传递则是实现窗口之间数据共享和逻辑控制的重要手段,本文将详细解释如何在PB中使用数据窗口进行参数传递,并探讨其在iframe中的应用场景。
基本概念和传参方法
1. PowerBuilder中的函数和Message对象:
在PB中,函数如OpenWithParm、CloseWithReturn等在进行窗口操作时会用到Message消息对象存储参数,Message对象的三个属性(DoubleParm、PowerObjectParm、StringParm)用于保存传递给窗口的数据。
2. Message对象属性与参数类型对应关系:
Numeric(数值):Message.DoubleParm
PowerObject(PB对象,包括用户自定义的结构数据类型):Message.PowerObjectParm
String(字符串):Message.StringParm
根据不同的parameter/returnvalue参数类型,这些值会被保存在Message对象的不同属性中。
3. 单个参数的传递示例:
如果需要传递单个参数,可以使用如下代码:
openwithparm(w_1, "独孤求败")
在打开窗口w_1的open事件中键入:
sle_1.Text = message.stringparm
这样,“独孤求败”这个字符串就被传递给了窗口w_1的sle_1控件。
多参数传递的方法
当需要传递多个参数时,有两种常用的方法:使用结构变量和使用用户对象。
1. 使用结构变量传递多参数:
首先定义一个结构变量lstr_para
,包含各种参数:
structure lstr_para { string ID string Name string Sex string Loca }
在调用脚本中,为结构变量赋值并使用openwithparm函数:
lstr_Tranpara.id = "00000001" lstr_Tranpara.name = "独孤求败" lstr_Tranpara.sex = "男" lstr_Tranpara.loca = "广东深圳" openwithparm(w_2, lstr_Tranpara)
在打开窗口w_2的open事件中获取结构信息:
lstr_Getpara = message.powerobjectparm sle_1.Text = lstr_Getpara.id sle_2.Text = lstr_Getpara.name sle_3.Text = lstr_Getpara.sex sle_4.Text = lstr_Getpara.loca
这样便实现了多参数的传递。
2. 使用用户对象传递多参数:
首先创建一个用户对象uo_para,包含需要的参数:
class uo_para { public string id public string name public string sex public string loca }
在调用脚本中创建用户对象实例并赋值,然后使用OpenWithParm函数:
uo_Tranpara = create uo_para uo_Tranpara.id = "00000001" uo_Tranpara.name = "独孤求败" uo_Tranpara.sex = "男" uo_Tranpara.loca = "广东深圳" OpenWithParm(w_3, uo_Tranpara)
在打开窗口w_3的open事件中获取用户对象信息:
uo_Getpara = message.powerobjectparm sle_1.Text = uo_Getpara.id sle_2.Text = uo_Getpara.name sle_3.Text = uo_Getpara.sex sle_4.Text = uo_Getpara.loca
通过这种方法也可以灵活地传递复杂的数据。
注意事项
在使用Message对象传递参数时,有几点需要注意:
及时提取Message值:最好在完成窗口操作后立即提取Message对象的值传给变量,因为Message是全局使用的,每次事件触发或传送时都会被使用,有被覆盖的风险。
避免传送NULL对象:确保传递的参数不为NULL,以免程序出错。
数据窗口在iframe中的应用
在Web应用中,iframe用于嵌入另一个页面的内容,PB中的PBDM(Data Window)可以方便地在iframe中显示,从而实现丰富的数据展示和交互功能,可以在主窗口的操作中通过参数传递来动态刷新或过滤iframe中显示的数据窗口内容,具体步骤如下:
1、设置数据窗口参数:
在调用iframe前,先设置好数据窗口的参数。
“`powerbuilder
dw_show.SetTransObject(SQLCA) // 连接事务对象
dw_show.Retrieve(参数1, 参数2, 参数3) // 检索数据
“`
这里假设dw_show是要在iframe中显示的数据窗口对象。
2、嵌入iframe:
在HTML代码中嵌入iframe标签,并设置src属性指向含有数据窗口的页面:
“`html
<iframe src="datawindowpage.htm" width="800" height="600"></iframe>
“`
datawindowpage.htm是包含数据窗口控件的页面文件。
3、参数传递和数据显示:
当用户操作主窗口(如点击按钮)时,通过参数传递来刷新或过滤iframe中的数据窗口内容,这可以通过JavaScript实现:
“`javascript
function refreshIframe() {
var iframe = document.getElementById(‘myIframe’); // 获取iframe对象
var dwParam1 = …; // 获取参数值
var dwParam2 = …; // 获取参数值
iframe.src = "datawindowpage.htm?param1=" + dwParam1 + "¶m2=" + dwParam2; // 修改src,添加参数
}
“`
在datawindowpage.htm页面中,通过URL参数读取传递的值,并刷新数据窗口:
“`powerbuilder
// PowerScript代码,从URL获取参数并刷新数据窗口
string param1, param2
GetURLParameter("param1", param1) // 获取URL参数
GetURLParameter("param2", param2) // 获取URL参数
dw_show.SetTransObject(SQLCA) // 重新连接事务对象
dw_show.Retrieve(param1, param2) // 根据新参数检索数据,刷新数据窗口显示
“`
通过这种方式,可以实现主窗口与iframe中数据窗口的动态交互和参数传递。
本文详细介绍了在PowerBuilder中使用数据窗口进行参数传递的方法,包括单个参数和多参数的传递方式,还探讨了如何将这些技术应用于iframe中,以实现更丰富的数据展示和交互功能,希望这些内容能帮助开发者更好地理解和应用PB的数据窗口及参数传递机制。
相关问答FAQs
Q1: 在PowerBuilder中传递参数有哪些常用方法?
A1: 在PowerBuilder中传递参数的常用方法有:使用结构变量传递多参数;使用用户对象传递多参数;使用全局变量或公共可访问的窗口实例变量来传送参数;在窗口中调用一个函数并传递所需的参数,还可以利用Message对象传递参数,但要注意及时提取Message值和避免传送NULL对象。
Q2: 在PB中如何使用数据窗口在iframe中显示和传递参数?
A2: 在PB中使用数据窗口在iframe中显示和传递参数的步骤包括:设置数据窗口参数并连接事务对象;在HTML中嵌入iframe标签,并设置src属性指向含有数据窗口的页面;通过JavaScript和URL参数实现主窗口与iframe中数据窗口的动态交互和参数传递,当用户操作主窗口时,可以通过修改iframe的src并添加参数的方式,让iframe中的页面读取URL参数并刷新数据窗口,从而实现数据的动态更新和显示。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/722224.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复