错误:下标值9无效。必须介于0到8之间

时间:2011-12-26 06:02:30

标签: variables repeat visualforce

这是我的vf页面,我在BadgeController的{​​{1}}获得了9条记录,即conListconList[0]

我使用变量conList[8]first作为List的下标。

我在每个顶点将变量值增加2:重复,从0到2可以正常工作。

但是当变量变为9时,它显示的错误如下:

  

下标值9无效。必须在0到8之间。

如何防止变量递增?

如何在if .. else条件下中断代码的执行?

second

1 个答案:

答案 0 :(得分:1)

我不确定你在这里问什么,但听起来你只想在列表中显示交替值。这是Apex的工作(或者如果你真的不想编写任何Apex,可能是JavaScript,但如果你计划在Force.com上停留一段时间,你应该了解Apex)。在Apex中,您可以使用列表执行任何您喜欢的操作,并显示您需要显示的任何内容,而无需将您的演示文稿与业务逻辑紧密结合。从Visualforce Developer's Guide:

  

注意:apex:variable不支持在一个内部重新分配   迭代组件,例如apex:dataTable或apex:repeat。该   这样做的结果,例如,将apex:变量增加为a   计数器,不受支持且未定义。

所以这是一个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以生成具有您希望的任何行顺序的单个列表并显示该列表。

希望有所帮助。