【问题标题】:How to get RecId selected from lookup method?如何从查找方法中选择 RecId?
【发布时间】:2015-10-27 13:14:42
【问题描述】:

我想从查找方法中选择 RecId?

StringEditLookup_ZipCode中的查找方法

public void lookup()
{
Query query = new Query();
QueryBuildDataSource queryBuildDataSource;
QueryBuildRange queryBuildRange;

SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(LogisticsAddressZipCode), this);

sysTableLookup.addLookupField(fieldNum(LogisticsAddressZipCode, ZipCode));
sysTableLookup.addLookupField(fieldNum(LogisticsAddressZipCode, City));

sysTableLookup.addSelectionField(fieldNum(LogisticsAddressZipCode, RecId));

queryBuildDataSource = query.addDataSource(tableNum(LogisticsAddressZipCode));

sysTableLookup.parmQuery(query);

sysTableLookup.performFormLookup();
//super();
}

modified 方法中,我想读取广告并使用RecId

我想用 ZipCode 值填充 StringEditLookup_ZipCode

可以使用 RecID 吗? LogisticsAddressZipCode 表没有被 ZipCode 索引 为此,我需要获取 RecID。

有一种方法可以保存在全局变量中,或者以某种方式在 lookup 方法中选择的 recid 或其他点?

谢谢大家,

享受吧!

【问题讨论】:

  • 您的查询不会在 'ZipCode' 字段中搜索,因此索引无关紧要。
  • 嗨@SirTroll,感谢您的宝贵时间!你有一个理由,我的问题是在查找方法中保留对所选记录的引用,因为,我会想使用所选记录的其他信息。 (在第一个 StringEditLookup_ZipCode 中依次选择查找值后,我将其他信息的记录插入到另一个 StrindEdit 中)。感谢您的帮助。

标签: axapta lookup dynamics-ax-2012 x++


【解决方案1】:

据我所知,SysTableLookup 框架无法做到这一点。基本上,您希望您的查找返回两个值,ZipCodeRecId。但是框架只能返回一个值。

因此,您需要通过创建新的lookup form 来实现自己的查找,而不是框架。然后,您可以从此表单中检索lookup 方法中的选定记录。下面是一些代码,可让您了解lookup 方法的外观:

public void lookup()
{
    FormRun lookupFormRun;
    Args args;
    LogisticsAddressZipCode myLookupZipCode;

    args = new Args();
    args.name(formStr(MyNewLookupForm));
    lookupFormRun = classFactory.formRunClass(args);
    lookupFormRun.init();
    this.performFormLookup(lookupFormRun);
    lookupFormRun.wait();
    if (lookupFormRun.closedOk())
    {
        myLookupZipCode= formRun.docCursor();
    }
}

您可以从那里将myLookupZipCodeRecId 保存到类变量中,然后在modified 方法中使用它。

还可以查看Lookup form returning more than one value 了解更多信息。

【讨论】:

    【解决方案2】:

    你所拥有的正是我会尝试的。当您从查找中选择一个值时会发生什么?如果这不起作用,我会尝试将 RecId 添加为查找字段之一。这可能是它没有选择字段的地方,所以它总是空白的。这是我要尝试的第一件事。

    【讨论】:

    • 嗨@CodyThimm,感谢您的回复。我想在LogisticsAddressZipCode 上选择一条记录,用你的值 ZipCode 获取(并填充)StringEditLookup_ZipCode。这很容易,但我想保持对记录的引用(通过 RecId)并获取更多信息从同一记录中获取更多信息并在另一个 StingEdit 中使用(和填充)。但是在我选择查找记录后,我的代码丢失了参考。感谢您的宝贵时间!
    • 在这种情况下,您应该使用 ZipCode 而不是将 RecId 作为您的 selectionField。并且在控件上的修改方法中,在 super() 之后,我使用 LogisiticsAddressZipCode::find(this.valueStr()).RecId 来获取 RecId,将其存储在您想要的任何位置。
    • 嗨,但我有一个问题,在 LogisiticsAddressZipCode 上有更多具有相同 ZipCode 的记录,我不会进行单义搜索。我会选择一个邮政编码并采取 RecId。谢谢@codemann8
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 2018-04-07
    • 2020-09-13
    • 1970-01-01
    • 2018-09-23
    相关资源
    最近更新 更多