[英]How to sort an ASP.NET MVC dropdownlist?
我有这个代码
List<SelectListItem> list = new List<SelectListItem>()
{
new SelectListItem() { Text = "bob", Value = "bob"},
new SelectListItem() { Text = "apple", Value = "apple"},
new SelectListItem() { Text = "grapes", Value = "grapes"},
};
这将用于与 asp.net mvc html helper 绑定。 但是我想在绑定之前对其进行排序。 我怎么能这样做?
如果您可以使用 LINQ,则:
list.OrderBy(x => x.Value)
要么
list.OrderByDescending(x =>x.Value)
应该这样做。
编辑
那应该读;
list = list.OrderBy(x => x.Value);
干得好:
List<SelectListItem> list = new List<SelectListItem>()
{
new SelectListItem() { Text = "apple", Value = "apple"},
new SelectListItem() { Text = "bob", Value = "bob"},
new SelectListItem() { Text = "grapes", Value = "grapes"},
};
排序:)
对不起,无法阻止自己:)
编辑
看起来你需要:
var fruits = new List<string> {"apple", "bob", "grapes"};
fruits.Sort();
var fruitsSelectList = new SelectList(fruits);
然后在视图中
Html.DropDownList("Fruit",fruitsSelectList);
var sorted = (from li in list
orderby li.Text
select li).ToList();
瞧!!
MVC的思想不是功能和显示分离吗? 如果您想以不同的顺序重复使用相同的列表怎么办?
我原以为这是最好的,因为它只对指定的控件进行排序。
向您用于视图的模型添加一个属性:
public SelectList Fruit { get; set; }
在您的构造函数中填充该列表(我使用的是实体框架):
model.Fruit= new SelectList(db.tblFruit.Select(f => new { Id = f.ID, Name = f.Name }), "ID", "Name", "[Select Fruit]");
然后添加您的选择列表:
@Html.DropDownListFor(x => x.ID, new SelectList(Model.Fruit.OrderBy(y => y.Text), "Value", "Text"), "-- Select One --", new { @class = "form-control" })
您也可以使用 javascript (jquery) 在客户端对其进行排序
顺便说一句,如果您知道列表中的元素,只需自己对它们进行排序:
List<SelectListItem> list = new List<SelectListItem> {
new SelectListItem { Text = "apple", Value = "apple"},
new SelectListItem { Text = "bob", Value = "bob"},
new SelectListItem { Text = "grapes", Value = "grapes"}
};
在 Controller 中处理它的一种非常简单的方法:
ViewBag.change_week = new SelectList(db.weeks.OrderBy(x=> x.week_guid), "week_guid", "week_number");
列表.排序
List<SelectListItem> list = new List<SelectListItem>()
{ new SelectListItem() { Text = "bob", Value = "bob"},
new SelectListItem() { Text = "apple", Value = "apple"},
new SelectListItem() { Text = "grapes", Value = "grapes"}, };
列表排序;
-------存储过程-----(SQL)
USE [Your Database]
GO
CRATE PROC [dbo].[GetAllDataByID]
@ID int
AS
BEGIN
SELECT * FROM Your_Table
WHERE ID=@ID
ORDER BY Your_ColumnName
END
----------默认.aspx---------
<asp:DropDownList ID="ddlYourTable" runat="server"></asp:DropDownList>
---------Default.aspx.cs-------
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List<YourTable> table= new List<YourTable>();
YourtableRepository tableRepo = new YourtableRepository();
int conuntryInfoID=1;
table= tableRepo.GetAllDataByID(ID);
ddlYourTable.DataSource = stateInfo;
ddlYourTable.DataTextField = "Your_ColumnName";
ddlYourTable.DataValueField = "ID";
ddlYourTable.DataBind();
}
}
-------LINQ助手类----
public class TableRepository
{
string connstr;
public TableRepository()
{
connstr = Settings.Default.YourTableConnectionString.ToString();
}
public List<YourTable> GetAllDataByID(int ID)
{
List<YourTable> table= new List<YourTable>();
using (YourTableDBDataContext dc = new YourTableDBDataContext ())
{
table= dc.GetAllDataByID(CID).ToList();
}
return table;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.