如何让我的下拉列表按我在 MVC 中的项目的字母顺序排列?
How do I get my dropdownlist to be in alphabetical order for my project in MVC?
我需要让下拉列表中的元素按字母顺序显示。以下是代码:
<select id="participantIds" data-placeholder="Select Participants" class="chosen-select"
multiple style="width:100%;" tabindex="4"
asp-for="UserIds"
asp-items="@(new SelectList(ViewBag.Users, "Id", "Name"))">
我试过用 `OrderBy 来做,但它似乎对 `ViewBag` 不起作用?如何使用 JavaScript 或 Jquery 来实现?
我的 ViewBag
属于:
this.ViewBag.Users = await this._eventSessionService.GetAllUsers(eventSessionId);
由于 ViewBag
是动态的,因此您不能在动态 属性
上使用 Orderby
或其他方法
现在假设您的 ViewBag.Users
属于 List<Users>
,您可以将 属性 转换为已知类型集合,然后扩展方法应该可用。
<select id="participantIds" data-placeholder="Select Participants" class="chosen-select"
multiple style="width:100%;" tabindex="4"
asp-for="UserIds"
asp-items="@(new SelectList((ViewBag.Users as List<Users>).OrderBy(x=>x.Name), "Id", "Name"))">
另一种方法是在控制器中对列表进行排序,然后再将其分配给 ViewBag
:
var userList = await this._eventSessionService.GetAllUsers(eventSessionId);
this.ViewBag.Users = userList.OrderBy(x=>x.Name);
您还可以在初始化后使用 JQuery
对我们的列表进行排序:
var myList = $('#participantIds');
var selected = myList.val();
var opts_list = myList.find('option');
opts_list.sort(function(a, b) { return $(a).text() > $(b).text() ? 1 : -1; });
myList.html('').append(opts_list);
myList.val(selected);
我需要让下拉列表中的元素按字母顺序显示。以下是代码:
<select id="participantIds" data-placeholder="Select Participants" class="chosen-select"
multiple style="width:100%;" tabindex="4"
asp-for="UserIds"
asp-items="@(new SelectList(ViewBag.Users, "Id", "Name"))">
我试过用 `OrderBy 来做,但它似乎对 `ViewBag` 不起作用?如何使用 JavaScript 或 Jquery 来实现?
我的 ViewBag
属于:
this.ViewBag.Users = await this._eventSessionService.GetAllUsers(eventSessionId);
由于 ViewBag
是动态的,因此您不能在动态 属性
Orderby
或其他方法
现在假设您的 ViewBag.Users
属于 List<Users>
,您可以将 属性 转换为已知类型集合,然后扩展方法应该可用。
<select id="participantIds" data-placeholder="Select Participants" class="chosen-select"
multiple style="width:100%;" tabindex="4"
asp-for="UserIds"
asp-items="@(new SelectList((ViewBag.Users as List<Users>).OrderBy(x=>x.Name), "Id", "Name"))">
另一种方法是在控制器中对列表进行排序,然后再将其分配给 ViewBag
:
var userList = await this._eventSessionService.GetAllUsers(eventSessionId);
this.ViewBag.Users = userList.OrderBy(x=>x.Name);
您还可以在初始化后使用 JQuery
对我们的列表进行排序:
var myList = $('#participantIds');
var selected = myList.val();
var opts_list = myList.find('option');
opts_list.sort(function(a, b) { return $(a).text() > $(b).text() ? 1 : -1; });
myList.html('').append(opts_list);
myList.val(selected);