2012-02-17 71 views
0

我遇到了使用正确数据填充数据表的问题。如何仅显示表格的子集

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

的问题是,我需要的SalesTable形式显示在userConfigProfiles基于断什么群组当前用户的行的子集上向下创建下降。

我试图通过添加要做到这一点下面的代码表中,在SalesTable形式userConfigProfiles:

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

    super(); 
} 

然后,我添加此查找方法的表本身:

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方法被调用并且它返回正确的数据,它也不会影响到我的表单上的下拉列表中的数据。

我的下拉列表是userConfigProfiles的DataSource和corpProfileId的数据字段一个StringEdit场。

我敢肯定有几种方法可以解决我的问题,我是开放给任何人,即使这意味着要删除所有我的代码,做下拉框中完全不同。

回答

1

使用表UserConfigProfiles与存在加入(属性joinMode)至表UserGroupList创建查询,使用适当的关系,然后在字段UserId添加范围内的一个(currentUserId())value

此值是一个动态query expression其由类SysQueryRangeUtil提供。

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

+0

谢谢你的帮助!我能够使用你给我的东西,并找出如何解决我的问题! – 2012-02-20 15:14:45

2

到目前为止,在查找方法最好的教程是由瓦尼亚:

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

下载他的教程XPO并使用他对你的表格选项之一。你的代码看起来有点像黑客工作。

如果你想在表格中显示的记录的子集,您应该修改查询(),但如果你想从查找更改显示的值,然后我会看看他的博客帖子。

+0

我想显示记录的子集,但我不知道如何做到这一点。 – 2012-02-17 21:36:40

+0

你说:“我需要在SalesTable窗体上创建一个显示行的子集的下拉列表”,这称为查找。查找的一个例子是如果你去SalesTable,然后在销售线上,你点击物品单元旁边的下拉箭头,这样你就可以看到Each,Feet,Inches等等。这就是你所要的试图创造? – 2012-02-17 22:29:03

+0

是的,除了下拉列表中的项目与当前登录的用户相关而不是与销售线本身相关。 – 2012-02-18 00:21:59