DW(数据窗口)作为下拉方式存在,可以设置datavalue和displayvalue。
datavalue是column的实际数值,而我们看到的是displayvalue,当然可以设置两个都相同
如果要取得datavalue很简单,dw_control.getItemXXX(row, column_name)
(XXX为column的类型,比如String, Number等等)
如果要取得显示值得时候就相对麻烦些(datavalue跟displayvalue不一样)
方法有两种,一种是getChild方法取得下拉句柄,并顺藤摸瓜取得。这个方法略显麻烦,但结果是肯定的
DataWindowChild ldw_child
String ls_dataCol, ls_displayCol
String ls_dataValue, ls_displayValue
long ll_row
if dw_control.getChild(col_name, ref ldw_child) = 1 then
// 取得当前行的datavalue
ls_dataValue = dw_control.getItemString(dw_control.getRow(), col_name)
// 取得下拉dw对应的datacolumn和displaycolumn
ls_dataCol = dw_control.describe(col_name + ".dddw.datacolumn")
ls_displayCol = dw_control.describe(col_name + ".dddw.displayColumn")
// 查找对应资料的位置
ll_row = ldw_child.find(ls_dataCol + " = '" + ls_dataValue + "'", 1, ldw_child.rowCount())
// 取得显示值
if ll_row > 0 then
ls_displayValue = ldw_child.getItemString(ll_row, ls_displayCol)
end if
end if
另外一种利用dw内部函数取得,这个就显得相当简洁
long ll_row
ll_row = dw_control.getRow()
dw_control.Describe("Evaluate('lookupdisplay(col_name)',"+String(ll_row)+")")