Visualforce apex:查找/引用字段上的inlineEditSuport

时间:2012-04-12 05:22:57

标签: salesforce visualforce

我有一个带有查找字段的对象,并希望在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事件来完成这项工作 - 即鼠标悬停,但这并不是特别用户友好。我需要保持一致的用户体验并使用双击操作。

有没有办法阻止将“帐户”字段呈现为链接,或者以某种方式在其旁边插入“编辑”图标?

3 个答案:

答案 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>