我有一个包含以下数据的列表
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
答案 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中支持地图和列表部分所述。
祝你好运!