一、 初步了解
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