0

我将“原产国”添加到 InventTable。我创建了一个扩展 LogisticsAddressCountryRegionId 的新字段。我将该字段添加到 InventTable,然后将该字段添加到字段组。一切都按预期工作。当下拉菜单打开时,表单上有一个显示代码(如“USA”)和描述(如“United States”)的下拉菜单。当下拉菜单关闭时,它会显示“美国”。我们希望它显示描述。这可能吗?有什么建议怎么做吗?

谢谢!托尼

4

1 回答 1

2

A)如果描述(在您的场景“美国”中)是 LogisticsAddressCountryRegion 中的一个字段而不是显示字段,那么正确的做法如下:

  1. 在 InventTable 中创建一个新的 Relation,将其 Table 属性设置为 LogisticsAddressCountryRegion
  2. 右键单击新关系,选择 New > ForeignKey > Single field AlternateKey based
  3. 它将自动创建类型为 RefRecId 的新字段 LogisticsAddressCountryRegion(不是您的示例中的 LogisticsAddressCountryRegionId!)。然后,您可以手动将其 ExtendedDataType 属性从 RefRecId 更改为 LogisticsAddressCountryRegionRecId
  4. 现在,如果您手动将此字段从表单的数据源拖放到表单中的网格或组中,则会创建一个 ReferenceGroup 控件
  5. 默认情况下,此控件将显示来自 LogisticsAddressCountryRegion 的 CountryRegionId ("US")(与现在对您的工作方式相同)。您不需要它 - 您希望显示描述。在这种情况下,ReferenceGroup 的 ReplacementFieldGroup 属性值需要从 AutoIdentification 更改为 Description(可能是 LogisticsAddressCountryRegion 表中包含 Description 字段的组的名称)。
  6. Voilà - 描述(“美国”)以这种形式显示,查找仍然可以像以前一样使用

B)但是在您的特定场景中,不能使用这种方法,因为表 LogisticsAddressCountryRegion 中没有描述字段 - 有显示方法 displayName,它从另一个表(LogisticsAddressCountryRegionTranslation)中提取描述。

在这种情况下,可以使用稍微笨拙的方法:在 InventTable 中创建一个编辑方法,它应该使用扩展数据类型 LogisticsAddressCountryRegionShortName。对其进行编码,以便 a) 根据输入的值更新 InventTable 中的“原产国”字段,b) 根据“原产国”字段值显示 LogisticsAddressCountryRegion.displayName()。如果您需要帮助编码此方法,我可以建议。然后拖放该编辑方法以在您的表单中创建一个 StringEdit 控件。而已。请注意,您将无法使用此控件中的值在表单中进行排序和过滤。

C)不要为上述烦恼。使用 2 个控件:一个选择原产国(它将显示“美国”),另一个显示描述(“美国”)。在您当前的解决方案中,您需要更改的只是添加一个基于显示方法的新控件 - 一旦您选择了原产国,显示方法将显示其描述。我建议您使用这种方法。

Nota bene: “实际上 - 我想出了一个方法来做到这一点。我创建的字段与“ShortName”的长度相同,即 255。然后,我只是覆盖了字段上的查找方法。- 不不不,这是一个非常糟糕的主意,不要这样做。InventTable 和 LogisticsAddressCountryRegion 之间必须存在 ForeignKey 关系(指向 CountryRegionId 或 RecId 的链接)。

于 2014-08-04T21:27:36.140 回答