步骤1:创建指定的视图模型
在上一篇文章的演示中,我们使用了产品的集合作为其实体模型(以NorthwindDataContext去命名)。这对简单的网格来说是可以的,但对于要排序的数据表格,需要知道一点的不仅仅是产品的集合,还要视图层方面知道哪些列的数据需要进行排序,是按升序或降序排序,如果用户要点的列已经按某一个顺序已排序的话,则此时会按原来的顺序排序(假设某列已经是按升序排列,用户点标题一次,则倒过来按降序排列,再点一次,又按升序,如此类推)。
为此,我们添加一个新类,这些类被称为特定视图服务的模型,打开上一篇文章中已经实现的应用程序,在Models文件夹下添加一个名为ProductGridModel.cs 的文件,代码如下:
{
public class ProductGridModel
{
// Data properties
public IEnumerable<Product> Products { get; set; }
// Sorting-related properties
public string SortBy { get; set; }
public bool SortAscending { get; set; }
public string SortExpression
{
get
{
return this.SortAscending ? this.SortBy + " asc" : this.SortBy + " desc";
}
}
}
}
该ProductGridModel类定义了一个产品属性,它是一个集合类的属性,用来显示产品集合,同时也有三种排序相关的属性:
SortBy
在数据库中用来排序的数据列名称
SortAscending
一个布尔值,指示是否用升序排序数据
SortExpression
只读属性,返回一个排序字符串,其构造为SortBy和SortAscending值的组合。
例如,如果SortBy分为“UnitePrice“和SortAscending是true,SortExpression的值为
“ UnitedPrice asc“。
如果SortBy设置为“Discontinued “和SortAscending是false,则SortExpression返回“Discontinued desc “。