我在使用正确的数据填充数据表时遇到问题。
我有一个表单中使用的数据表。它被称为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。
我很确定有几种方法可以解决我的问题,我对其中的任何一个都开放,即使这意味着删除所有代码并完全不同地执行下拉框。
答案 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创建查找。