You need to sign in to do that
Don't have an account?
吉田 丈治
SOQLの取得項目に変数名を付けることは出来ないか
Visualforceページを作っています。
例えば取引先に紐付いたvisualforceページで取引先名のプリフィクスで表示内容を変えるというようなイメージです。
visualforceページにはコンタクトリストを表示したいと思います。
コンタクトリストはSOQLで作成しています。
Apex例
このような場合にvisualforceページでpageBlockでコンタクトリストを表示したいと思っています。
先ほどapexに書いたように、取引先名のプリフィクスに入っている文字列によって取得する項目を分けているので、それに応じた表示をしたいのです。
そのようなことは可能でしょうか?
例えばapex側で customqueryの後ろ側に変数名として customNameのようなものを振ることができれば、それを呼び出せばよいかと思ったのですが、それはできなさそうでした。
this.clist = Database.query('SELECT Id, Name, ' + customquery + ' customName FROM Contact');
何か良い方法は無いでしょうか。
例えば取引先に紐付いたvisualforceページで取引先名のプリフィクスで表示内容を変えるというようなイメージです。
visualforceページにはコンタクトリストを表示したいと思います。
コンタクトリストはSOQLで作成しています。
Apex例
public class customAccontPage{ public customAccontPage(ApexPages.StandardController controller) { this.acc = (Account)controller.getRecord(); } public void getCustomQuery(){ if( acc.Name.contains('prifix 1') ){ customquery = 'phone';//電話番号 }else if( acc.Name.contains('prifix 2') ){ customquery = 'mobile__c';//携帯電話 } } public void getContactList(){ this.clist = new List <Contact> (); this.clist = Database.query('SELECT Id, Name, ' + customquery + ' FROM Contact'); } }
このような場合にvisualforceページでpageBlockでコンタクトリストを表示したいと思っています。
先ほどapexに書いたように、取引先名のプリフィクスに入っている文字列によって取得する項目を分けているので、それに応じた表示をしたいのです。
<apex:pageBlock title="ルーチン" id="TcoR"> <apex:pageBlockTable value="{!clist}" var="c"> <apex:column value="{!c.Id}"/> <apex:column value="{!c.name}"/> <apex:column value="{!c. }"/> // ここにcustomqueryで取得した項目をだしたい </apex:pageBlockTable> </apex:pageBlock>
そのようなことは可能でしょうか?
例えばapex側で customqueryの後ろ側に変数名として customNameのようなものを振ることができれば、それを呼び出せばよいかと思ったのですが、それはできなさそうでした。
this.clist = Database.query('SELECT Id, Name, ' + customquery + ' customName FROM Contact');
何か良い方法は無いでしょうか。
takama
2つの手段があるかと思います。
- 取引先責任者(Contact)に取引先名のプリフィクスからいずれの項目を使用するかの数式を作成する
- Visualforceのapex:columnで「phone」「mobile__c」双方のカラムを用意しrender属性を指定して条件に合致する方だけ表示する