繁体   English   中英

如何对 ASP.NET MVC 下拉列表进行排序?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM