如何仅显示表的子集

时间:2012-02-17 19:53:43

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

我在使用正确的数据填充数据表时遇到问题。

我有一个表单中使用的数据表。它被称为userConfigProfiles。它有2个FK列groupId(这个连接到UserGroupInfo)和corpProfileId(这个连接到我创建的表)。 userConfigProfiles中的数据是从另一个表单填充的,目前已正确填充。

问题是,我需要在SalesTable表单上创建一个下拉列表,该表单显示userConfigProfiles中基于当前用户所在用户组的行的子集。

我尝试通过在表格中添加以下代码来实现此目的,在SalesTable表单中添加userConfigProfiles:

public void init()
{
    userConfigProfiles.data(userConfigProfiles::find());

    super();
}

然后我将这个find方法添加到表本身:

static public userConfigProfiles find()
{
    userConfigProfiles userProfile;
    UserGroupList userGroupList;

    str 8 u = curUserId();

    select *
    from userProfile
    order by userProfile.bdcProfileId
        join userGroupList
    where userProfile.groupId == userGroupList.groupId
        && userGroupList.userId == u;

    return userProfile;
}

但是,即使我的find方法被调用并返回正确的数据,它也不会影响进入我表单下拉列表的数据。

我的下拉列表是一个StringEdit字段,其DataSource为userConfigProfiles,DataField为corpProfileId。

我很确定有几种方法可以解决我的问题,我对其中的任何一个都开放,即使这意味着删除所有代码并完全不同地执行下拉框。

2 个答案:

答案 0 :(得分:2)

到目前为止,关于查找方法的最佳教程是Vanya:

http://kashperuk.blogspot.com/2009/04/lookup-methods-tutorial-custom-list.html

下载他的教程XPO,并为您的表单使用他的一个选项。你的代码看起来有点像黑客工作。

如果您尝试在表格上显示记录的子集,则应修改查询(),但如果您尝试更改查找中显示的值,那么我会查看他的博客帖子

答案 1 :(得分:1)

使用表UserConfigProfiles创建一个查询,其中存在一个连接(属性joinMode)到表UserGroupList,使用适当的关系,然后在字段UserId上添加范围value的{​​{1}}。

此值是动态query expression,由类SysQueryRangeUtil提供。

最后使用您的查询使用类SysTableLookup创建查找。