Salesforce apex,将值添加到列表中,然后按特定顺序显示它们

时间:2013-11-12 19:57:27

标签: salesforce apex

我有一个多选选择列表,其中包含特定顺序的首字母(不是按字母顺序排列),这些首字母用于团队排名。所以每次我向团队添加一名成员时,他必须根据他的排名(姓名缩写)保存并显示在报告上。

例如,如果我的排名是:AB,XY,FC和DQ,然后我创建了两个成员(FC,AB),则必须在FC之前的报告上显示带AB的那个。

我创建了一个列表,其中包含所需顺序的首字母,每次创建成员时,它都会被添加到不同的列表中。我现在得到的是,创建的最后一个成员(最后一个成员添加到列表中)显示在报告的末尾,即使他的排名高于他之前添加的排名。所以我的问题是: 如何根据我的排名顺序保存我添加到列表中的成员?

谢谢你们的努力!

2 个答案:

答案 0 :(得分:0)

据我所知,您只能使用add或addAll函数将项添加到列表中,这些函数将新项放在列表的末尾。您也可以使用数字索引替换项目,但这不会提供您似乎引用的插入功能。但是,您可以添加新的列表成员,然后调用列表中的排序函数以按升序对事物进行排序。这将给出您之后的结果。这是一个例子:

List<String> rankings = new List<String>();
rankings.add('XY');
rankings.add('AB');
rankings.add('FC');  // you should now have ['XY', 'AB', 'FC']
rankings.sort();     // should rearrange the list items to be ['AB', 'FC', 'XY']

更多信息:http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_System_List_sort.htm

但是,这只会为您提供一个排序的字符串列表,并且没有指向相关记录的链接。如果您在控制器中或通过ajax添加记录,那么您也可以只为成员运行soql查询并按排名字段进行排序,以获得应用了您的订单的新列表。如果没有看到您的实施或知道您正在做什么的任何细节,很难说最好的方法是什么,但正如我上面所示,可以保持列表对象的排序加入它。

答案 1 :(得分:0)

为什么你有一个多选择的排名选择列表?每个成员只有一个排名,对吗?如果是这种情况,标准选项列表应该可以解决问题。

您应该为要创建列表的组成员创建SOQL查询,然后使用Order By子句按选项列表字段值排序。

假设:

对象 - 用户

排名领料单字段 - ranking__c //包含排名的用户对象的自定义字段

团队 - team__c //用户对象的自定义字段,包含成员的团队编号。

列出用户=新列表();

users = [来自用户的SELECT ID,其中ranking_ c!= NULL AND Team _c ='Some Value'ORDER BY ranking__c];

//其他一些代码对已排序的用户列表执行某些操作。请注意,order by子句按自定义“ranking__c”字段中的值进行排序。

我希望你觉得这很有用。

此致 Ĵ