gpt4 book ai didi

c# - 将 POCO 与 ASP.net 数据控件一起使用时实现排序/页面功能

转载 作者:行者123 更新时间:2023-11-30 22:50:44 24 4
gpt4 key购买 nike

我不太喜欢数据集,所以我使用 POCO 返回数据。我已经使用我为 POCO 类型创建的自定义方法实现了分页和排序,这些方法适用于页面大小并一次给我一组完整的 POCO 集合,我使用检查单击的 DataItem 的名称和排序顺序的方法做那种。为您计划与 Gridview 等 ASP.net 数据控件一起使用的每个 POCO 一遍又一遍地创建这样的方法是非常痛苦的。

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

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

编辑:我发现了这个 article关于这个话题。这是实现我想要做的事情的唯一可能方法吗??

最佳答案

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

通常对于 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);
}
}
}

关于c# - 将 POCO 与 ASP.net 数据控件一起使用时实现排序/页面功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/421720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com