我有一个要求,我想知道是否可行。我有 Visualforce 页面,它将显示 SOQL 查询的结果,但是 SOQL 查询是动态的,可以是对自定义对象或标准对象的查询。我目前正在将 SOQL 查询硬编码到 Controller 类中,同时尝试弄清楚它是如何工作的。我打算在 Apex 的 pageBlockTable 或 dataTable 中显示 SOQL 查询的结果。
这在 Salesforce 中可行吗?如果可以的话,谁能给我一个示例,说明它如何在 Visualforce 和 Apex 中工作?
最佳答案
您应该阅读“动态引用”(也称为“动态绑定(bind)”)。一个好的起点:http://www.salesforce.com/us/developer/docs/pages/Content/pages_dynamic_vf_sample_standard.htm
基本上,如果你有String fieldName = 'AccountNumber';
,稍后在Visualforce中可以直接引用:
<apex:outputField value="{!a.AccountNumber}">
或动态:
<apex:outputField value="{!a[fieldName]}">
.
这类似于 a.AccountNumber
或a.get('AccountNumber')
在顶点。例如查看 getting Value of a field by its Name in apex salesforce如果您从未见过它。
您必须小心它们,因为如果您的基础对象不被考虑,它将失败(例如没有 Contact.AccountNumber
字段)。上面的示例仅涉及帐户,但无论如何它都是一个很好的介绍。
一旦您熟悉了基本概念,您就可以探索fieldsets的世界。 - 应该组合在一起的预定义字段组 - 您可以使用它们来显示和查询数据,基本上它们比带有字段名称的硬编码字符串列表(如第一个链接中)更强大,但仍然是相同的想法。
至少您现在知道要查找哪些关键字;)
关于salesforce - 显示未知 SOQL 查询的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15133014/