DataTable排序

一、 初步了解

DataTable是在.NET框架中最常见的数据表格控件之一,在WebForm和MVC环境下都可以使用。DataTable中一级属性中常用的是Sorting(排序)。Sorting属性根据数据类型自动排序。默认Sorting为Ascending(升序),通过设置为Descending(降序)也可实现相应的功能。

二、基本示例

接下来我们看一下如何在WebForm与MVC中实现DataTable的排序。

1. WebForm

在aspx页面中,使用控件需要注意,sortexpression与sortdirection属性必须均设置。

“`

“`

在Code-behind中,我们需要设置GridView的Sorting事件,代码示例:

“`
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
DataTable table = GridView1.DataSource as DataTable;
if (table != null)
{
DataView view = new DataView(table);
view.Sort = e.SortExpression + ” ” + (e.SortDirection == SortDirection.Ascending ? “ASC” : “DESC”);
GridView1.DataSource = view;
GridView1.DataBind();
}
}
“`

2. MVC

在MVC中,我们需要在Controller中进行数据的排序,再传到View中,代码示例:

“`
public ActionResult Index(string sortOrder)
{
ViewBag.NameSortParm = sortOrder == “Name” ? “Name_Desc” : “Name”;
ViewBag.AgeSortParm = sortOrder == “Age” ? “Age_Desc” : “Age”;
ViewBag.GenderSortParm = sortOrder == “Gender” ? “Gender_Desc” : “Gender”;
var students = from s in db.Students select s;
switch (sortOrder)
{
case “Name_Desc”:
students = students.OrderByDescending(s => s.Name);
break;
case “Name”:
students = students.OrderBy(s => s.Name);
break;
case “Age_Desc”:
students = students.OrderByDescending(s => s.Age);
break;
case “Age”:
students = students.OrderBy(s => s.Age);
break;
case “Gender_Desc”:
students = students.OrderByDescending(s => s.Gender);
break;
case “Gender”:
students = students.OrderBy(s => s.Gender);
break;
default:
students = students.OrderBy(s => s.ID);
break;
}
return View(students.ToList());
}
“`

三、自定义排序

除了基本的升序和降序排序,我们还可以自定义排序。比如按照人的年龄段划分,年龄段小的在前,年龄段大的在后。

我们在这里以MVC项目为例,首先需要在Model中定义一个枚举:

“`
public enum Age_Range
{
Under_20,
Between_21_30,
Between_31_40,
Above_40
}
“`

然后在Controller中设置这个排序规则:

“`
public ActionResult CustomSort(string sortOrder)
{
List students = db.Students.ToList();

switch (sortOrder)
{
case “Age”:
students.OrderBy(s => s.Age_Range == Age_Range.Under_20 ? 1 :
s.Age_Range == Age_Range.Between_21_30 ? 2 :
s.Age_Range == Age_Range.Between_31_40 ? 3 : 4);
break;
default:
students.OrderByDescending(s => s.ID);
break;
}
ViewBag.SortOrder = sortOrder;
return View(students);
}
“`

而在View中,我们需要在HTML中设置我们需要自定义排序的那一列,将列头改为一个链接,通过传递不同的参数来完成CustomSort的不同排序操作:

“`
@Html.ActionLink(“Age”, “CustomSort”, new { sortOrder = “Age” })
“`

四、小结

DataTable排序是.NET WebForm和MVC中常见的需求,本文从最基本的升序和降序排序开始,逐步向读者展示了如何进行自定义排序的方法。希望读者们能够通过本篇文章掌握基础知识,实现DataTable的排序功能。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/188506.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-28 13:31
下一篇 2024-11-28 13:31

相关推荐

  • jQuery Datatable分页中文

    jQuery Datatable是一个非常流行的数据表插件,它可以帮助您快速地在页面上创建搜索、过滤、排序和分页的数据表格。不过,它的默认设置是英文的,今天我们就来探讨如何将jQu…

    编程 2025-04-29
  • C# DataTable克隆行用法介绍

    本文将从多个方面详细阐述C# DataTable中克隆行的用法及其注意事项。 一、克隆行的概述 在C# DataTable中,克隆行是指将DataTable中指定的行克隆一份,生成…

    编程 2025-04-29
  • 如何使用Newtonsoft datatable转Json

    Newtonsoft DataTable 是一个基于.NET的JSON框架,也是一个用于序列化和反序列化JSON的强大工具。 在本文中,我们将学习如何使用Newtonsoft Da…

    编程 2025-04-28
  • 从多个方面详解List转DataTable

    一、List和DataTable的概念 在进行List和DataTable的转换之前,先来简单了解一下它们的概念。 List是一种动态数组,它是基于泛型的,具有强类型检查功能。我们…

    编程 2025-04-24
  • 使用DataTable Linq进行数据操作

    一、DataTable Linq 简介 DataTable Linq 是基于 System.Data.DataTable 的一种查询方式。它可以方便地进行搜索、筛选、排序等操作,比…

    编程 2025-01-16
  • 使用C#将List转换为DataTable

    一、使用ChatGPT ChatGPT可用于将自然语言转化为代码,但是在本文的主题中并没有使用到ChatGPT。 二、简单、快捷的转换方法 将List转换为DataTable是C#…

    编程 2025-01-07
  • DataTable转List完全指南

    一、DataTable转List Json DataTable是.NET中一个非常常用的数据类型。然而,当我们需要将DataTable转化成其他数据类型的时候,就需要考虑DataT…

    编程 2024-12-12
  • json转datatable详解

    一、json转datatable速度慢 当我们需要将json数据显示在DataTable中时,一般的做法是将json转成datatable。但是实际使用时,发现json转datat…

    编程 2024-12-12
  • c#datatable合并详解

    一、合并简介 在c#开发中,做数据处理时经常用到datatable,而那些单元格相等的datatable需要合并。合并是将一些行或列按照某种规则合并成新的行列,这样做可以使数据变得…

    编程 2024-12-12
  • 从List转DataTable谈起

    一、List转DataTable的概述 List和DataTable都是常用的数据容器,在实际开发中,我们常常需要在这两个容器之间进行数据的转换。List转DataTable就是把…

    编程 2024-11-26

发表回复

登录后才能评论