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
iwakiiwaki 

リストのサイズを超えて繰り返しを行いたい

お世話になっております。

取引先責任者から参照関係にある職歴というオブジェクトがあります。
職歴を取引先責任者のIDをキーにSOQLでリストとして取得し、visualforceのPDFに表示したいと考えています。
ただし下図のように11件の職歴の枠は固定で表示したいと考えています。
User-added image
解決できないのが、dataTableなどで表示しようとすると上図のように3件しか職歴のレコードがない場合は、
職歴4以降が表示されなくなってしまいます。
職歴の番号ごとにSOQLで個別に取得することで解決はできますが、11回クエリを消費するため、
1回で取得でき、かつリストにない番号もあわせて表示する方法はあるものでしょうか。
Best Answer chosen by iwaki
Ryosuke KobayashiRyosuke Kobayashi
こんにちは

常に11件出力したいのであれば、取得したリストを常に11件にしてしまえばよいのかなと思います。
イメージは以下のような形です。
List<shoku__c> shokuList = [select Id,name,xx__c from shoku__c where contact = :contact.id limit 11];

integer listSize = shokuList.size();
shoku__c shoku = new shoku__c();
for(integer i = listSize ; i < 11;i++){
    shokuList.add(shoku );
}

取得した職歴リストが常に11件になるよう、不足している分だけ空のオブジェクト変数をAddします。
そうすれば、dataTable等を利用して表示した際に、11件分出力されると思います。

All Answers

Ryosuke KobayashiRyosuke Kobayashi
こんにちは

常に11件出力したいのであれば、取得したリストを常に11件にしてしまえばよいのかなと思います。
イメージは以下のような形です。
List<shoku__c> shokuList = [select Id,name,xx__c from shoku__c where contact = :contact.id limit 11];

integer listSize = shokuList.size();
shoku__c shoku = new shoku__c();
for(integer i = listSize ; i < 11;i++){
    shokuList.add(shoku );
}

取得した職歴リストが常に11件になるよう、不足している分だけ空のオブジェクト変数をAddします。
そうすれば、dataTable等を利用して表示した際に、11件分出力されると思います。
This was selected as the best answer
phoenix7788phoenix7788
こんにちは

外の枠をHTMLで固定で作成すれば、
値の有無に関係なく外の枠がなくならないと思います。
iwakiiwaki
ご教示ありがとうございました!
試して見た結果、11件になるようにAddすることでrepeatを使って表示することができるのでベストアンサーとさせていただきました。