首页 > 解决方案 > 使用带有隐藏列的 WebGrid Helper 时默认排序不起作用

问题描述

我正在使用@grid.GetHtmlgridview 在我的 ASP.NET MVC4 应用程序中显示网格。

使用带有列(主键)的 WebGrid Helper 隐藏时,默认排序不起作用。

使用 SP 获取 web 网格数据,并且在 SP 中给出了默认排序。

我的代码:

@grid.GetHtml(
    htmlAttributes: new
      {
          id = "XXXX"
      },
    tableStyle: "table table-bordered table-condensed table-hover table-striped",
    headerStyle: "info",
    footerStyle: "webgrid-footer",
    alternatingRowStyle: "webgrid-alternating-row",
    selectedRowStyle: "webgrid-selected-row",
    rowStyle: "gridrow",
    columns: grid.Columns(
        grid.Column("AAAA", "AAAA",style:"hidecol") //Primary Column Name is “AAAA” 
    )
)

用于隐藏主列的列标题的 JQuery 代码。

<script type="text/javascript">
$(document).ready(function() {
  $("# XXXX th:nth-child(1)").hide();
});
</script>

标签: jqueryasp.net-mvc-4razorwebgrid

解决方案


您可以在将它们传递给视图之前对控制器中的项目进行排序。这样他们应该保留你想要的顺序:

public IActionResult Index()
{
    var items = new List<obj>(){new obj(5), new obj(1), new obj(355)};
    var sortedItems = items.OrderBy(o => o.Id);
    return View(sortedItems);
}

如果您需要一种在视图本身中对它们进行排序的方法,您可以执行类似的操作

public IActionResult Index(string sortOrder)
{
    var items = new List<obj>(){new obj(5), new obj(1), new obj(355)};

    if (sortOrder == "ASC")
    {
        items = items.OrderBy(o => o.Id).ToList();
    }
    return View(items);
}

从按钮或视图中需要的任何位置调用该控制器的位置


推荐阅读