有没有办法处理基于网格的数据窗口中单个行的下拉列表的动态更改?

gla*_*snt 8 powerbuilder datawindow

有没有办法处理基于网格的数据窗口中单个行的下拉列表的动态更改?

例:

NAME    LIKABILITY         PURCHASED IN  COLOUR
(Text)  (DropDown*)        (Text)        (Text)
Bananas [Good]             Hands         Yellow
        [Bad]
        [Bananas are good]

Apples  [Good]             Bags          Red
        [Bad]
Run Code Online (Sandbox Code Playgroud)

鉴于上述情况是一种基于网格的数据窗口,其中字段NAME,PURCHASED IN并且COLOUR是文本字段,其中的LIKABILITY字段是一个下拉*.

我说dropdown*因为可以通过使用DropDownList(在设计时在datawindow元素内硬编码)或DropDownDW(或DDDW,可以基于数据窗口中的其他元素的select语句)来创建相同的可视化表示.

但是,我无法获得Bananas3次下拉菜单,而苹果只有2次.

如果我输入多行Bananas,则所有行都有3个下拉列表,但只要我添加一个Apples行,所有下拉列表都会恢复为2个选择.

为了尝试实现此功能,我尝试了以下选项:

  1. dw_1.Object.likability.values("Good~tG/Bad~tB/Bananas are good~tDRWHO") 在编辑NAME时在ue_itemchange上.

    失败:编辑所有LIKABILITY实例而不是当前行.

  2. 重复下拉列表,每行有一个已过滤的,一个未过滤的选择列表,基于NAME选择可见.

    失败:无法在基于网格的数据窗口上设置可见性/重叠列.(资源)

  3. 硬编码显示值为数据库值,或反之亦然.有GOOD,BAD,BANANASAREGOOD作为显示和数据库值,和从G,B,DRWHO到这些新的值选项改变处理.

    FAILS:所有行都显示第3个选项,仍可在Apple行上选择,这是错误的.

  4. DDDW检索下拉列表的选项列表.创建一个使用NAME值的DDDW来确定它应该为下拉列表选择哪些选项.

    FAILS:编辑下拉列表的所有实例,而不仅仅是当前行.

  5. DDDW检索可用选项的计数器(如果B然后3其他2),则具有基于DDDW计数器保护/解除保护的重复下拉列.

    失败:无法自动选择dddw值来填充列以引起其他两列的保护,无论如何都是丑陋的解决方案.

对于任何能够为我提供解决方案的人来说,这个问题现在有一个赏金,这个解决方案可以让我在PB 10.5中基于网格的数据窗口编辑单行的下拉列

Col*_*ard 3

您可以在 rowfocuschanged 事件上编辑代码表的内容。由于您一次只能展开一个下拉菜单,因此这应该可以提供您所需的用户体验。

不幸的是,您无法像使用字体大小那样根据表达式更改代码表。

如果您需要对下拉列表进行更多控制,可以将其设为 DropDownDW。您可以在 RowFocusChanged 上重新检索它,传递第二列中的值。