我有一个简单的SOQL查询,它返回与联系人和活动成员相关的信息。我试图用SOQL查询的结果填充一个自定义对象。但是,在加载Visualforce页面时,我遇到以下错误:
无效的字段活动。活动成员名称
List campaignMembers = [select campaign.name, contact.id,contact.firstname, contact.lastname, status, campaignId from CampaignMember where contactId = '003U000000U0eNq' and campaignId in :campaigns]; for (Integer i = 0; i < campaignMembers.size(); i++) { results.add(new CampaignMemberResult( (String)campaignMembers[i].get('CampaignId'), (String)campaignMembers[i].get('campaign.name'), true )); }
我已经在开发人员控制台中单独运行了SOQL查询,它成功地进行了查询。为什么我不能参加竞选呢。for循环中SOQL查询的名称?
您看到的错误是由于您应该将其编写为活动成员[i]。运动名称。或者,如果您坚持getter语法,campaignMembers[i]。getSobject(“活动”)。获取('Name')
。
是否有任何特殊原因需要包装器对象(或任何活动成员结果)?我有一种奇怪的感觉,您编写的代码太多,无法实现简单的功能;)与campaignMembers[i]的语法。运动名称也意味着不必对字符串使用强制转换。
此外,如果您需要知道“此联系人在哪些活动中发生”,您有两种方法:
平的
select contact.id,contact.firstname, contact.lastname,
campaignid, campaign.name,
status
from CampaignMember
where contactId = '003U000000U0eNq'
子查询
从联系你到相关的竞选成员名单,然后到竞选活动以获得他们的名字
SELECT Id, FirstName, LastName,
(SELECT CampaignId, Campaign.Name FROM CampaignMembers)
FROM Contact WHERE Id = '003U000000U0eNq'
示例如何在visualforce中直接使用“flat”结果(无活动成员结果):
顶点:
public List<CampaignMember> flatMembers {get;set;} // insert dick joke here
flatMembers = [select contact.id,contact.firstname, contact.lastname,
campaignid, campaign.name,
status
from CampaignMember
where contactId = '003U000000U0eNq'];
VF:
<apex:pageBlockTable value="{!flatMembers}" var="cm">
<apex:column value="{!cm.Contact.LastName}" />
<apex:column value="{!cm.Status}" />
<apex:column value="{!cm.Campaign.Name}" />
编辑
我的最终目标是在联系人记录上显示一个Visualforce页面,显示所有活动的列表,每个活动旁边都有一个复选框,指示联系人是否为成员。
你知道它能很快长成一张很长的桌子吗?可能会对活动进行一些筛选(如果您想阅读一些高级内容,请查看文档中的“StandardSetController”)。此外,我很确定有一些方法可以从活动报告中为活动添加联系人/潜在客户-也许一些现成的方法可以节省您的时间,并且更易于维护。。。
但是代码解决方案会非常简单,从一个帮助包装类开始:
public class CampaignWrapper{
public Boolean selected {get;set;}
public Campaign c {get; private set;}
public CampaignWrapper(Campaign c){
this.c = c;
selected = !c.CampaignMembers.isEmpty();
}
}
然后查询并构建包装器列表:
List<CampaignWrapper> wrappers = new List<CampaignWrapper>();
for(Campaign c : [SELECT Id, Name, (SELECT Id FROM CampaignMember WHERE ContactId = '...')
FROM Campaign
LIMIT 1000]){
wrappers.add(new CampaignMember(c));
}
你应该已经准备好了;)如果只是为了显示——你甚至可能不需要包装类(也许是Visual alforce表达式中的一些技巧,或者使用Map
1000条记录是传递给Visualforce的集合限制(如果您的页面为只读,则为10K)。除此之外-分页,很可能与上述StandardSetController一起使用。
我看到了许多类似问题的答案,人们说为了获得组合框中加载的项目的值,需要使用 但这种东西不起作用…… 这是我所拥有的…… 我从表中选择了Code1和Code2,我希望能够显示Code1,当被选中时,我希望能有Code2的值,但对于displayMember和ValueMember,我看不到任何结果。 编辑:这是我的所有代码: 暗淡的行=dt. Load(com. Ex 错误提示:表达式不产生值 编辑
我正在查询Sql Server并返回一个List-我想使用此List作为我的组合框的源。下面是我正在使用的代码,它运行时没有错误,但我的组合框始终为空并且从不填充。这里有什么不正确的? 主要的Java语言 样品fxml
问题内容: 我有要查询的模型(称为“活动”)(使用Mongoose)。他们的架构如下所示: 当我询问他们,我填充,,,和字段(所有引用)。在那之后,我也深入了这个领域。这是我的查询代码: 这已经是一个相对复杂的查询,但是我需要做更多。如果它碰到了声明的一部分,我 还 需要确保的字段等于字符串。我尝试使用,但是由于必须先填充事件,因此无法查询其任何字段。我还需要在其他多个查询中实现相同的目标。 如我
问题内容: 一般而言,我对Mongoose和MongoDB还是很陌生,所以我很难确定是否可以进行以下操作: 有更好的方法吗? 编辑 如有任何混淆,我们深表歉意。我想做的是获取所有包含有趣标签或政治标签的商品。 编辑 没有where子句的文档: 使用where子句,我得到一个空数组。 问题答案: 对于大于3.2的现代MongoDB,您可以在大多数情况下用作替代。这也有实际上做加盟,而不是什么“在服务
问题内容: 这应该是程序员经常遇到的问题,但是我从来没有尝试过用这种方式来解决问题。 也就是说,我会解释。说,我需要像这样从表Zoo获取值: 现在,我可以将所有值都添加到列表中。我需要在网格中显示该查询的详细信息。现在已经有了z.predator和z.prey值(它们是时间上的整数,即它们各自的ID),我需要填充其有意义的值以将其显示给最终用户(我不能仅仅显示其ID)。所以现在我可能会做这样的事情
我想用本机查询的结果填充数据传输对象类。但我收到以下错误: 这是我的DTO课 这是我的原生查询。这是一个简单的查询: 我使用的是Spring Data JPA,但我知道在hibernate中存在一个方法setResultTransformer,但我在JPA中找不到类似的方法。 在我的例子中,我需要使用本机查询,因为在其他查询中会使用表值函数。