2

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

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

4

3 回答 3

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 可能会在未来的更新中更改/破坏它)。

于 2013-09-18T15:42:44.310 回答
0

这可能不是最简单的方法,但我之前所做的是在查找中创建记录名称的选择列表。无论如何,我认为这对用户来说比销售人员查找框更好(除非有数百个,我想)。您需要做的是在控制器中创建一个选择选项列表,并将它们分配给诸如 theList 之类的变量,然后引用 {!theList} 您​​想要放置它的位置(大致;参见文档)。选择选项需要将记录名称作为标签,将记录 ID 作为值。然后,您可以将 Id 直接分配给查找字段。

于 2012-04-12T10:36:48.477 回答
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>

于 2012-04-17T00:20:06.470 回答