function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
thsrthsr 

lookupについて

取引先:テキストボックス lookupボタン テキストボックス

 

上記のように、参照関係項目を作成し、lookupボタンを押下、選択したら、

左のテキストボックスに取引先IDを、右のテキストボックスに取引先名を入れたいのですが、

実現方法を教えていただけますか?

 

デフォルト機能は 左のテキストボックスに取引先IDを入れるのが確認しましたが、

よろしくお願いいたします。

Best Answer chosen by Admin (Salesforce Developers) 
HikeyHikey

おそらく VisualforceのactionSupport コンポーネントを利用すると可能と思います。 

 

ルックアップボタンでサブウィドウを開き取引先を選択すると左に「取引先名」、右のテキストボックスに「取引先のID」が

表示されるサンプルです。

 

準備: 

1.Accountの子供のカスタムオブジェクト AccountChaildを作成

2.1のオブジェクトにAccountParent というAccountの参照項目を追加

3.以下のコードで動作を確認してみてください。

 

===(拡張Controller)

public class discus43Ext {

    private final AccountChaild__c obj;

    public discus43Ext(ApexPages.StandardController stdController) {
        this.obj = (AccountChaild__c)stdController.getRecord();
    }
   
    public String AccountParentId{get; set;}

   
    public PageReference doAccountId(){

        AccountParentId = obj.AccountParent__c;
        return null;
    }


}

 

 

 

===(VF page)

 

<apex:page standardController="AccountChaild__c" extensions="discus43Ext">
    <apex:form >
        取引先名
        <apex:inputField value="{!AccountChaild__c.AccountParent__c}">
                    <apex:actionSupport event="onfocus"
                                action="{!doAccountId}"
                                rerender="accid" />
        </apex:inputField>
       
        取引先ID
        <apex:outputpanel id="accid">
            <apex:inputText value="{!AccountParentId}" />
        </apex:outputpanel>

    </apex:form>
</apex:page>

All Answers

HikeyHikey

おそらく VisualforceのactionSupport コンポーネントを利用すると可能と思います。 

 

ルックアップボタンでサブウィドウを開き取引先を選択すると左に「取引先名」、右のテキストボックスに「取引先のID」が

表示されるサンプルです。

 

準備: 

1.Accountの子供のカスタムオブジェクト AccountChaildを作成

2.1のオブジェクトにAccountParent というAccountの参照項目を追加

3.以下のコードで動作を確認してみてください。

 

===(拡張Controller)

public class discus43Ext {

    private final AccountChaild__c obj;

    public discus43Ext(ApexPages.StandardController stdController) {
        this.obj = (AccountChaild__c)stdController.getRecord();
    }
   
    public String AccountParentId{get; set;}

   
    public PageReference doAccountId(){

        AccountParentId = obj.AccountParent__c;
        return null;
    }


}

 

 

 

===(VF page)

 

<apex:page standardController="AccountChaild__c" extensions="discus43Ext">
    <apex:form >
        取引先名
        <apex:inputField value="{!AccountChaild__c.AccountParent__c}">
                    <apex:actionSupport event="onfocus"
                                action="{!doAccountId}"
                                rerender="accid" />
        </apex:inputField>
       
        取引先ID
        <apex:outputpanel id="accid">
            <apex:inputText value="{!AccountParentId}" />
        </apex:outputpanel>

    </apex:form>
</apex:page>

This was selected as the best answer
thsrthsr

ご回答ありがとうございます。

とても参考になりました。

またよろしくお願いいたします。

thsrthsr

すみません、一個追加質問させてください。

 

いただいたVF pageのソースに必須項目(AccountChaild__cにsuryo__cを追加)を表示しようとすると、取引先IDがうまく表示されなくなりますが、

解決方法をご存知でしたら、教えていただけますか?よろしくお願いいたします。

 

 

===(VF page)

<apex:page standardController="AccountChaild__c" extensions="discus43Ext">
    <apex:form >
    <apex:inputField  id="suryo" value="{!AccountChaild__c.suryo__c}"/>

        取引先名
        <apex:inputField value="{!AccountChaild__c.AccountParent__c}">
                    <apex:actionSupport event="onfocus"
                                action="{!doAccountId}"
                                rerender="accid" />
        </apex:inputField>
      
        取引先ID
        <apex:outputpanel id="accid">
            <apex:inputText value="{!AccountParentId}" />
        </apex:outputpanel>

    </apex:form>
</apex:page>

HikeyHikey

inputField はカスタムフィールドの属性を反映します。必須項目となっているため、拡張コントローラ

でのdoAccountIdメソッド処理の前にエラー発生し処理が実行されていません。

 

<apex:pageMessages></apex:pageMessages> を追加してエラーの内容を確認してみてください。

 

解決方法はカスタムフィールドの必須項目の属性をはずして入力チェック処理を

拡張コントローラ(discus43Extクラス)側で実装することです。

 

 

<apex:page standardController="AccountChaild__c" extensions="discus43Ext">
<apex:form >


<apex:inputField id="suryo" value="{!AccountChaild__c.suryo__c}"/>

取引先名
<apex:inputField value="{!AccountChaild__c.AccountParent__c}">
<apex:actionSupport event="onfocus"
action="{!doAccountId}"
rerender="accid" />
</apex:inputField>

取引先ID
<apex:outputpanel id="accid">
<apex:inputText value="{!AccountParentId}" />

<apex:pageMessages></apex:pageMessages>


</apex:outputpanel>

</apex:form>


</apex:page>

 


 

 

 

 

thsrthsr

ご回答ありがとうございます。

なるほど!

わかりました。

またよろしくお願いいたします。