powerbuilder 中如何获取数据窗口选中行
时间: 2024-02-12 19:08:40 浏览: 23
在 PowerBuilder 中,可以通过以下代码获取数据窗口中选中的行:
```
// 假设数据窗口名为 dw_1
integer li_row // 选中的行号
li_row = dw_1.GetSelectedRow()
// 获取选中行的具体值
string ls_col1, ls_col2
ls_col1 = dw_1.GetItemString(li_row, "col1")
ls_col2 = dw_1.GetItemString(li_row, "col2")
```
如果数据窗口允许多选,则可以使用以下代码获取所有选中的行:
```
// 假设数据窗口名为 dw_1
integer li_count // 选中的行数
integer la_rows[] // 选中行的行号数组
li_count = dw_1.GetSelectedRows(la_rows)
// 遍历选中行的具体值
for i = 1 to li_count
string ls_col1, ls_col2
ls_col1 = dw_1.GetItemString(la_rows[i], "col1")
ls_col2 = dw_1.GetItemString(la_rows[i], "col2")
next
```
其中,"col1" 和 "col2" 分别代表数据窗口中的列名。
相关问题
powerbuilder 中如何获取数据窗口是否勾选
在 PowerBuilder 中,可以通过以下代码获取数据窗口中是否勾选了某一行:
```
// 假设数据窗口名为 dw_1,复选框列名为 cb_col
integer li_row // 行号
boolean lb_checked // 是否勾选
li_row = 1 // 假设要获取第一行的勾选状态
lb_checked = Boolean(dw_1.GetItemNumber(li_row, "cb_col"))
```
其中,`GetItemNumber` 方法会返回该行指定列的值。在使用布尔型数据时,需要将其转换为 Boolean 类型,以便进行判断。
如果需要获取多行的勾选状态,则可以使用以下代码:
```
// 假设数据窗口名为 dw_1,复选框列名为 cb_col
integer li_count // 勾选的行数
integer la_rows[] // 勾选行的行号数组
li_count = dw_1.GetSelectedRows(la_rows)
// 遍历勾选行,打印勾选状态
for i = 1 to li_count
boolean lb_checked // 是否勾选
lb_checked = Boolean(dw_1.GetItemNumber(la_rows[i], "cb_col"))
MessageBox("Status", "Row " + string(la_rows[i]) +
" is " + iif(lb_checked, "checked", "unchecked"))
next
```
其中,`GetSelectedRows` 方法会返回所有勾选的行号,以数组形式存储。遍历数组,获取每一行的勾选状态,然后进行处理。
PowerBuilder中查询获取datawindow中某一行数据
在 PowerBuilder 中,可以使用以下代码获取 DataWindow 中的某一行数据:
```powerscript
// 假设 dw_employee 是一个 DataWindow 对象
// 获取第 3 行数据
dw_employee.SetRow(3)
// 获取第 3 行的 emp_name 列数据
string ls_emp_name
ls_emp_name = dw_employee.Object.emp_name[3]
```
上述代码中,`SetRow()` 方法用于设置 DataWindow 中的当前行,然后使用类似数组的方式获取该行的某一列数据。需要注意的是,如果 DataWindow 中没有数据或者某一列数据为空,上述代码可能会抛出异常,需要进行异常处理。