Salesforce 如何在Vf页面中创建分组数据节

Salesforce 如何在Vf页面中创建分组数据节,salesforce,visualforce,Salesforce,Visualforce,我有一个数据列表如下 customer name Make Area Mike honda Chicago Kevin GM Chicago Bill Audi New York roger Suzuki New York 我需要在Vf页面中显示此信息,并在其下显示区域作为节和名称以及make New york Roger Suzuki Bil

我有一个数据列表如下

customer name  Make      Area
Mike           honda     Chicago
Kevin          GM        Chicago
Bill           Audi      New York
roger          Suzuki    New York
我需要在Vf页面中显示此信息,并在其下显示区域作为节和名称以及make

New york
Roger          Suzuki    
Bill           Audi      

Chicago
Mike           honda     
Kevin          GM        
任何关于如何得到这个的建议都会很有帮助

谢谢
Prady

我可以想出两种可能的方法来实现这一点,第一种(肯定有效)是在控制器中使用包装器类,如下所示:

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);
    }
}
选项2:

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

public map<string, list<Contact>> mapAreaToContacts {get; set;}
publicmap-mapAreaToContacts{get;set;}
填充这个应该很容易,非常类似于上面的代码。现在使用动态Visualforce绑定,如支持贴图和列表一节中的所述


祝你好运

我可以想出两种可能的方法来实现这一点,第一种(肯定有效)是在控制器中使用包装器类,如下所示:

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);
    }
}
选项2:

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

public map<string, list<Contact>> mapAreaToContacts {get; set;}
publicmap-mapAreaToContacts{get;set;}
填充这个应该很容易,非常类似于上面的代码。现在使用动态Visualforce绑定,如支持贴图和列表一节中的所述


祝你好运

选项1确实对我有用。。。如果我允许更新name或make的值呢?如果我在VF页面中使用inputfield,我应该更新哪个列表?嗨,普拉迪,如果你在联系人字段中使用apex:inputFields,那么更新它们应该没有问题。在控制器中,如果您在一个位置更新了联系人,您将在另一个位置看到更新的版本(因为您有对对象的引用),不确定这是否与VF有关。刚刚意识到,您还可以删除代码中的carea列表,然后对构建的映射使用动态绑定。可能会简化事情。我所做的是循环浏览所有的职业,在新列表中添加联系人并更新列表。它工作得很好,也许不是最好的方法,也会尝试动态绑定。。谢谢你的帮助选项1对我有用。。。如果我允许更新name或make的值呢?如果我在VF页面中使用inputfield,我应该更新哪个列表?嗨,普拉迪,如果你在联系人字段中使用apex:inputFields,那么更新它们应该没有问题。在控制器中,如果您在一个位置更新了联系人,您将在另一个位置看到更新的版本(因为您有对对象的引用),不确定这是否与VF有关。刚刚意识到,您还可以删除代码中的carea列表,然后对构建的映射使用动态绑定。可能会简化事情。我所做的是循环浏览所有的职业,在新列表中添加联系人并更新列表。它工作得很好,也许不是最好的方法,也会尝试动态绑定。。谢谢你的帮助