加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

排序 – sortdir没有在MVC 3 WebGird中使用枚举数据类型

发布时间:2020-12-16 07:03:21 所属栏目:asp.Net 来源:网络整理
导读:我有以下结构: 模型 public class EventEntry : LogEntry{ public EventType Type { get; set; } public string Source { get; set; }}public enum EventType : int{ Information = 1,Warning = 2,Error = 3} 视图 div id="grid"@{ var grid = new WebGrid(
我有以下结构:

模型

public class EventEntry : LogEntry
{
    public EventType Type { get; set; }

    public string Source { get; set; }
}

public enum EventType : int
{
    Information = 1,Warning = 2,Error = 3
}

视图

<div id="grid">
@{
    var grid = new WebGrid(canPage: true,rowsPerPage: Ctrl.PageSize,canSort: true,ajaxUpdateContainerId: "grid");
    grid.Bind(Model.Events,rowCount: Model.TotalRecords,autoSortAndPage: false);

    grid.Pager(WebGridPagerModes.All);
    @grid.GetHtml(htmlAttributes: new { id="grid" },columns: grid.Columns(
            grid.Column("Type"),grid.Column("Source"));    
}
</div>

调节器

public ActionResult Index(int? page,string sort,string sortdir) {...}

当我点击字符串类型的“源”列时,sordir将从“ASC”更改为“DESC”,但是当我在“类型”列上尝试相同的操作时,sordir将始终返回“ASC”.

解决方法

当前接受的答案不是您问题的答案.

当您在绑定操作中未提及列名时,似乎未对排序进行排序.我通过在将模型绑定到webgrid时提供所有必需的列名来修复此问题. UserType属性是此示例中的枚举.

var webgrid = new WebGrid(rowsPerPage: 25);

        webgrid.Bind(Model,new[] { "FirstName","MiddleName","SurName","UserType" });

        var columns = webgrid.Columns(
            webgrid.Column("FirstName","Voornaam"),webgrid.Column("MiddleName","Tussenvoegsels"),webgrid.Column("SurName","Achternaam"),webgrid.Column("UserType","Type gebruiker"),);

因此,如果您实现以下代码,我认为排序将在不更改控制器的情况下工作:

<div id="grid">
@{
    var grid = new WebGrid(canPage: true,new[] { "Type","Source" },grid.Column("Source"));    
}
</div>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读