我有一个多选选择列表,其中包含特定顺序的首字母(不是按字母顺序排列),这些首字母用于团队排名。所以每次我向团队添加一名成员时,他必须根据他的排名(姓名缩写)保存并显示在报告上。
例如,如果我的排名是:AB,XY,FC和DQ,然后我创建了两个成员(FC,AB),则必须在FC之前的报告上显示带AB的那个。
我创建了一个列表,其中包含所需顺序的首字母,每次创建成员时,它都会被添加到不同的列表中。我现在得到的是,创建的最后一个成员(最后一个成员添加到列表中)显示在报告的末尾,即使他的排名高于他之前添加的排名。所以我的问题是: 如何根据我的排名顺序保存我添加到列表中的成员?
谢谢你们的努力!
答案 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”字段中的值进行排序。
我希望你觉得这很有用。
此致 Ĵ