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
TShinchiTShinchi 

VisualforceページでLookup

Visualforceで作り込んだページにルックアップ付きの入力フォームを組み込みたいと考えています。

 

これを実現するためのApexタグ(<apex:???>)は提供されているでしょうか。

また、提供されていない場合、どのようにすれば実現できるでしょうか。

 

http://boards.developerforce.com/t5/Visualforce-Development/Lookup-button-in-Visualforce-Page/m-p/123275#M12029

 

のあたりを参考にしてみていますが、上手くいかず。。。

 

何かご存知の方、おられましたら、よろしくお願いします。

takahiro-yoneitakahiro-yonei

ルックアップ付きのフィールドとしては、

 

<apex:inputField>

 

があります。

こちらを参照下さい。

apex:inputField のリファレンス

 

<apex:inputField value={!xxxx} />

という感じに書きます。また、value にはsObjectのField(他オブジェクトへの「参照」用として定義されたフィールド)を指定すればOKです。

 

 

TShinchiTShinchi

ありがとうございます。

 

<apex:inputField>を使うことで、lookupアイコン付きの入力フィールドを表示することができました。

 

ただ、lookupアイコンを押すと、表示される検索画面が意図したオブジェクトの検索を行わない状態になっています。

 

例えばContactテーブルをlookupで検索するようにしたい場合は、

 

Visualforceには

 

<apex:inputField id="theLookup" value="{!contact.AccountId}"/>

 

Apexには

 

    public List<Contact> contacts {
           get {
            if(contacts== null) {
                   contacts = [SELECT Id, Name, Account.Name, Phone, Email FROM Contact ORDER BY LastModifiedDate DESC LIMIT 10];
            }
            return contacts;
        }
        set;
   }

 

    public Contact getContact() {
        Id id = System.currentPageReference().getParameters().get('id');
        return id == null ? new Contact() : [SELECT Id, Name FROM Contact WHERE Id = :id];
    }

 

のように記述しているのですが、Contactを検索するlookupになりませんでした。

 

どのオブジェクトを検索対象とするかは

 

<apex:inputField id="theLookup" value="{!contact.AccountId}"/>

 

のvalueの値だけで決まるのでしょうか。何か他に紐づけが必要でしょうか。

 

<apex:page>のcontroller属性(<apex:page controller="***">)を対象オブジェクト(Conntacts)等にしないといけないでしょうか。

 

 

TShinchiTShinchi

自己解決できました。

 

<apex:inputField value="{!XXX}"/>

 

のvalue(XXX)に検索対象としたいSObjectのカラムを指定することで希望のデータを検索するようにできました。

 

ありがとうございました。