我有一个带有查找字段的对象,并希望在VisualForce页面中的该字段上使用InlineEditSupport。
但是,apex:outputField标记将查找字段呈现为超链接,它会覆盖inlineEditSupport逻辑。
例如
<apex:page standardController="Contact">
<apex:outputField value="{!Contact.LastName}">
<apex:inlineEditSupport event="ondblclick"/>
</apex:outputField>
<apex:outputField value="{!Contact.AccountId}">
<apex:inlineEditSupport event="ondblclick"/>
</apex:outputField>
</apex:page>
在此示例中,LastName字段将由apex:outputField标记呈现,并在双击时转换为可编辑字段。
但是,“帐户”字段呈现为帐户记录本身的超链接,该记录会在点击事件触发之前采取措施。
我可以通过使用备用javascript事件来完成这项工作 - 即鼠标悬停,但这并不是特别用户友好。我需要保持一致的用户体验并使用双击操作。
有没有办法阻止将“帐户”字段呈现为链接,或者以某种方式在其旁边插入“编辑”图标?
答案 0 :(得分:3)
我遇到了与pageBlockTable格式的内联编辑相同的问题。我们觉得这不是用户友好的。
我使用JavaScript(jQuery)将链接转换为纯文本,并使其行为与其他inlineEditable字段一样:
/// Overwrite default functionality for lookup columns (links to object page)
/// Change to text-only of name to prevent navigation away
$('TABLE[id$=checklistTable] TBODY TR TD A[id^=lookup]').each(function() {
var text = $(this).html();
$(this).parent().html(text);
});
这将转换匹配的jQuery选择器中的所有SalesForce查找字段。它还依赖于生成的输出HTML创建锚点链接,其ID以“查找”开头(意味着SalesForce可能会在将来更新时更改/中断)。
答案 1 :(得分:0)
这可能不是最简单的方法,但我之前所做的是创建查找中记录名称的选择列表。我认为这对于用户而言比销售人员查询框更好(除非有数百个,我想)。您需要做的是在控制器中创建一个选择选项列表,并将它们分配给某个变量(如List),然后引用要放置它的{!theList}(粗略地看;参见文档)。选择选项需要将记录名称作为标签,将记录ID作为值。然后,您可以将Id直接分配给查找字段。
答案 2 :(得分:0)
您是否尝试使用salesforce doc?
<apex:page standardController="Contact">
<apex:form >
<apex:pageBlock mode="inlineEdit">
<apex:pageBlockButtons >
<apex:commandButton action="{!edit}" id="editButton" value="Edit"/>
<apex:commandButton action="{!save}" id="saveButton" value="Save"/>
<apex:commandButton onclick="resetInlineEdit()" id="cancelButton" value="Cancel"/>
</apex:pageBlockButtons>
<apex:pageBlockSection >
<apex:outputField value="{!contact.lastname}">
<apex:inlineEditSupport showOnEdit="saveButton, cancelButton" hideOnEdit="editButton" event="ondblclick" changedStyleClass="myBoldClass" resetFunction="resetInlineEdit"/>
</apex:outputField>
<apex:outputField value="{!contact.accountId}"/>
<apex:outputField value="{!contact.phone}"/>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>