我不是数据集的忠实粉丝所以我使用POCO来返回数据。我使用我为POCO类型创建的自定义方法实现了分页和排序,这些方法适用于页面大小,并且一次为我提供一组完整的POCO集合,我使用方法检查单击的DataItem的名称和排序顺序到那样做。为计划与Gridview等ASP.net数据控件一起使用的每个POCO反复创建此类方法非常痛苦。

是否有一种自动化技术,以便我不需要每次都为新的POCO制作这样的方法,以便它像使用DataTable一样工作?如果需要,我可以提供更多解释。

注意:有些人可能会将POCO称为DTO。

编辑:我在这个主题上发现了这个文章 。这是唯一可能达到我想做的事情吗?

有帮助吗?

解决方案

我同意基类的想法,因为这将保存所有重复的代码。我做的一件事就是朝这个方向迈出了一步,就是创建一个类来处理任何通用列表的排序(对于DTO / POCO)。这允许我只用一行代码在我的演示者或代码隐藏中对列表进行排序。

通常,对于SortExpression,我返回要排序的DTO的属性名称。另外,SortDirection将是一个简单的“升序”。或者“降序”

List<Supplier> SupplierList = mSupplierService.GetSuppliers();
SupplierList.Sort(new GenericComparer<Supplier>(mView.SortExpression, mView.SortDirection));
mView.Suppliers = SupplierList;

这是我使用的课程

public class GenericComparer<T> : IComparer<T>
 {

     private string mDirection;
     private string mExpression;

     public GenericComparer(string Expression, string Direction)
     {
         mExpression = Expression;
         mDirection = Direction;
     }

     public int Compare(T x, T y)
     {
         PropertyInfo propertyInfo = typeof(T).GetProperty(mExpression);
         IComparable obj1 = (IComparable)propertyInfo.GetValue(x, null);
         IComparable obj2 = (IComparable)propertyInfo.GetValue(y, null);
         if (mDirection == "Ascending") {
             return obj1.CompareTo(obj2);
         }
         else {
             return obj2.CompareTo(obj1);
         }
     }
 }

其他提示

我创建了一个Entity基类。我的DAO派生自它,并具有与表列相对应的属性(大多数情况下)。我的DAL为任何查询返回List,并且可以绑定到GridView。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top