Я не совсем уверен, что вы спрашиваете здесь, но похоже, что вы просто хотите отобразить чередующиеся значения в списке. Это работа для Apex (или, возможно, JavaScript, если вы действительно не хотите кодировать какой-либо Apex, хотя вам следует познакомиться с Apex, если вы планируете некоторое время оставаться на Force.com). В Apex вы можете делать со списками все, что вам нравится, и отображать все, что вам нужно для отображения без , тесно связывая вашу презентацию с вашей бизнес-логикой. Из Руководства разработчика Visualforce:
Примечание: apex: переменная не поддерживает переназначение внутри
итерационный компонент, такой как apex: dataTable или apex: repeat.
результат этого, например, увеличение переменной apex: как
counter, не поддерживается и не определено.
Итак, вот пример Apex, который создает два списка чередующихся элементов для отображения в Visualforce:
public with sharing class Sample
{
public List<Contact> conListOne {get; private set;}
public List<Contact> conListTwo {get; private set;}
public Sample()
{
conListOne = new List<Contact>();
conListTwo = new List<Contact>();
Contact[] tmpConList = [SELECT Id, Name, Account.Name FROM Contact LIMIT 10];
Integer i = 0;
while(i < tmpConList.size())
{
conListOne.add(tmpConList[i]);
if((i + 1) < tmpConList.size())
{
conListTwo.add(tmpConList[i+1]);
}
i += 2;
}
}
}
Теперь вы можете отображать два разных списка в Visualforce, которые имеют четные / нечетные номера строк из исходного SOQL:
<apex:pageBlockTable value="{!conListOne}" var="item">
</apex:pageBlockTable>
<apex:pageBlockTable value="{!conListTwo}" var="item">
</apex:pageBlockTable>
Или просто измените Apex для создания единого списка с любым порядком строк, который вы пожелаете, и отобразите его.
Надеюсь, это поможет.