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/zh-hant/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

發表回復

登錄後才能評論