如何在Vf页面中创建分组数据的部分

时间:2012-01-17 19:00:12

标签: salesforce visualforce

我有一个包含以下数据的列表

customer name  Make      Area
Mike           honda     Chicago
Kevin          GM        Chicago
Bill           Audi      New York
roger          Suzuki    New York

我需要在Vf页面中显示此信息,其中区域为部分和名称,并在其下方生成

New york
Roger          Suzuki    
Bill           Audi      

Chicago
Mike           honda     
Kevin          GM        

关于如何获得这个的任何指示都会有很大的帮助。

由于 Prady

1 个答案:

答案 0 :(得分:4)

我可以想到两种可能的方法,第一种(肯定有效的)就是在你的控制器中使用包装类,如下所示:

public class CArea
{
    public list<Contact> liContacts {get; set;}
    public string strAreaName {get; set;}

    public CArea(Contact sContact)
    {
        strAreaName = sContact.City;
        liContacts = new list<Contact>{sContact};
    }
}

public list<CArea> liAreas {get; set;}
private map<string, CArea> mapAreas = new map<string, CArea>();

// **snip**
// fill up the list: (assuming contacts)

for(Contact sContact : myContactList}
{
    if(mapAreas.get(sContact.City) == null)
    {
        mapAreas.put(sContact.City, new CArea(sContact));
        liAreas.add(mapAreas.get(sContact.City);
    }
    else
    {
        mapAreas.get(sContact.City).liContacts.add(sContact);
    }
}

现在liAreas有一个CArea个对象列表,每个对象都包含一个联系人列表,因此您可以在页面中循环显示此列表:

<apex:repeat var="a" value="{!liAreas}">
    <apex:outputText value="{!a.strName}"/>
    <apex:repeat var="c" value="{!a.liContacts}">
        <apex:outputText value="{!c.FirstName c.LastName}"/>
    </apex:repeat>
</apex:repeat>

选项#2:

这可能要简单得多,但我没有尝试过像这样的两个级别的动态绑定。与之前类似的设置,但使用区域地图列出联系人列表:

public map<string, list<Contact>> mapAreaToContacts {get; set;}

填写此内容应该很容易,与上面的代码非常相似。现在使用动态Visualforce绑定,如Visualforce Developer's Guide支持地图和列表部分所述。

祝你好运!