有没有办法从 Apex 的 Visualforce 页面获取字段查找 ID?
Is there way to get field lookup Id from Visualforce Page in Apex?
有没有办法获取元素框中显示的标签 ID。查找 Id 很好,我们可以得到它,但要获取“贷款”的标签 Id ?
如有任何帮助,我们将不胜感激!
那样不行。您在评论中描述的内容通常被称为“URL 黑客攻击”。在“new”、“edit”等标准页面上它可以工作——但它基于 <input name="blabla">
而不是 <input id="blabla">
.
看看这个:https://www.google.com/?q=hello
检查字段的来源 - 有 name
但没有 id
。然而我预先填充了该字段。
由于它是一个 Visualforce 页面 - 您可以控制 URL 参数。你可以做出类似 /apex/vfPageName?contractId=....
的东西,你不必试图对 CF00N0l00000WER2
变得聪明。然后在 Apex 构造函数中,您可以使用 ApexPages.currentPage.getParameters().get('contractId')
.
我不知道你那里有什么控制器。只是 <apex:page controller="MyClass"
或 <apex:page standardController="Contract" extensions="MyClass"
。第二个会让您读取单击按钮的记录的 ID,但是如果您需要通过 url 传递的更多参数 - 请查看 getParameters()
如果您真的需要 ID...它们的形式为“CF”(自定义字段)+ 字段 ID,如您查看字段定义时在设置中看到的那样.例如,您可以在 FieldDefinition table 中查询 ID。但对于您需要的东西 - 看起来我们会使事情过于复杂。
问题:一旦用户单击 New
按钮
,就自动使用名称填充查找
方法:如果您获得查找的字段定义 ID,则为 DurableID 分配填充查找名称。
查询获取 DurableID :
1.List<FieldDefinition> fieldDefiInstance = [Select DeveloperName,label,Id,DurableId,EntityDefinitionId From FieldDefinition where EntityDefinition.DeveloperName='Party' and label = 'Contract'];
2.String fieldKey =fieldDefiInstance[0].DurableId.replace(fieldDefiInstance[0].EntityDefinitionId+'.','')+'CF';
3.System.debug('fieldKey=>'+fieldKey);
获得的 ID 为 CF00N000000XXX
。现在在 url 中分配 CF00N000000XXX=ContractName
示例:https://sales--cldev.my.salesforce.com/XXX/e?**CF00N000000XXX=ContractName**&inline=1
结果:
有没有办法获取元素框中显示的标签 ID。查找 Id 很好,我们可以得到它,但要获取“贷款”的标签 Id ?
如有任何帮助,我们将不胜感激!
那样不行。您在评论中描述的内容通常被称为“URL 黑客攻击”。在“new”、“edit”等标准页面上它可以工作——但它基于 <input name="blabla">
而不是 <input id="blabla">
.
看看这个:https://www.google.com/?q=hello
检查字段的来源 - 有 name
但没有 id
。然而我预先填充了该字段。
由于它是一个 Visualforce 页面 - 您可以控制 URL 参数。你可以做出类似 /apex/vfPageName?contractId=....
的东西,你不必试图对 CF00N0l00000WER2
变得聪明。然后在 Apex 构造函数中,您可以使用 ApexPages.currentPage.getParameters().get('contractId')
.
我不知道你那里有什么控制器。只是 <apex:page controller="MyClass"
或 <apex:page standardController="Contract" extensions="MyClass"
。第二个会让您读取单击按钮的记录的 ID,但是如果您需要通过 url 传递的更多参数 - 请查看 getParameters()
如果您真的需要 ID...它们的形式为“CF”(自定义字段)+ 字段 ID,如您查看字段定义时在设置中看到的那样.例如,您可以在 FieldDefinition table 中查询 ID。但对于您需要的东西 - 看起来我们会使事情过于复杂。
问题:一旦用户单击 New
按钮
方法:如果您获得查找的字段定义 ID,则为 DurableID 分配填充查找名称。
查询获取 DurableID :
1.List<FieldDefinition> fieldDefiInstance = [Select DeveloperName,label,Id,DurableId,EntityDefinitionId From FieldDefinition where EntityDefinition.DeveloperName='Party' and label = 'Contract'];
2.String fieldKey =fieldDefiInstance[0].DurableId.replace(fieldDefiInstance[0].EntityDefinitionId+'.','')+'CF';
3.System.debug('fieldKey=>'+fieldKey);
获得的 ID 为 CF00N000000XXX
。现在在 url 中分配 CF00N000000XXX=ContractName
示例:https://sales--cldev.my.salesforce.com/XXX/e?**CF00N000000XXX=ContractName**&inline=1
结果: