IranVisual
دوشنبه 10 فروردین 1394, 13:27 عصر
سلام و خسته نباشید به همه
چند روز پیش یه متد واسه صفحه بندی GridView پیدا کردم ، تنها کمبودش اینه که برای مرتب سازی باید خودمون query بنویسیم .
چطور می تونم به جای query نوشتن مستقیم در برنامه از نام فیلد به صورت string برای مرتب سازی استفاده کنم .
مثلا به این صورت
entity.orderby("FieldName")
متد صفحه یندی
/// <summary>
/// صفحه بندی کوئری
/// </summary>
/// <param name="query">کوئری مورد نظر شما</param>
/// <param name="pageNum">شماره صفحه</param>
/// <param name="pageSize">سایز صفحه</param>
/// <param name="orderByProperty">ترتیب خواص</param>
/// <param name="isAscendingOrder">اگر برابر با <c>true</c> باشد صعودی است</param>
/// <param name="rowsCount">تعداد کل ردیف ها</param>
/// <returns></returns>
public static IQueryable<T> PagedResult<T>(IQueryable<T> query, int pageNum,
int pageSize, string orderByProperty,
bool isAscendingOrder, out int rowsCount)
{
// if (pageSize <= 0) pageSize = 20;
//مجموع ردیفهای به دست آمده
rowsCount = query.Count();
// اگر شماره صفحه کوچکتر از 0 بود صفحه اول نشان داده شود
if (rowsCount <= pageSize || pageNum <= 0) pageNum = 1;
// محاسبه ردیف هایی که نسبت به سایز صفحه باید از آنها گذشت
int excludedRows = (pageNum - 1) * pageSize;
query = isAscendingOrder ? query.OrderBy(orderByProperty) : query.OrderByDescending(orderByProperty);
// ردشدن از ردیفهای اضافی و دریافت ردیفهای مورد نظر برای صفحه مربوطه
return query.Skip(excludedRows).Take(pageSize);
}
تشکر
چند روز پیش یه متد واسه صفحه بندی GridView پیدا کردم ، تنها کمبودش اینه که برای مرتب سازی باید خودمون query بنویسیم .
چطور می تونم به جای query نوشتن مستقیم در برنامه از نام فیلد به صورت string برای مرتب سازی استفاده کنم .
مثلا به این صورت
entity.orderby("FieldName")
متد صفحه یندی
/// <summary>
/// صفحه بندی کوئری
/// </summary>
/// <param name="query">کوئری مورد نظر شما</param>
/// <param name="pageNum">شماره صفحه</param>
/// <param name="pageSize">سایز صفحه</param>
/// <param name="orderByProperty">ترتیب خواص</param>
/// <param name="isAscendingOrder">اگر برابر با <c>true</c> باشد صعودی است</param>
/// <param name="rowsCount">تعداد کل ردیف ها</param>
/// <returns></returns>
public static IQueryable<T> PagedResult<T>(IQueryable<T> query, int pageNum,
int pageSize, string orderByProperty,
bool isAscendingOrder, out int rowsCount)
{
// if (pageSize <= 0) pageSize = 20;
//مجموع ردیفهای به دست آمده
rowsCount = query.Count();
// اگر شماره صفحه کوچکتر از 0 بود صفحه اول نشان داده شود
if (rowsCount <= pageSize || pageNum <= 0) pageNum = 1;
// محاسبه ردیف هایی که نسبت به سایز صفحه باید از آنها گذشت
int excludedRows = (pageNum - 1) * pageSize;
query = isAscendingOrder ? query.OrderBy(orderByProperty) : query.OrderByDescending(orderByProperty);
// ردشدن از ردیفهای اضافی و دریافت ردیفهای مورد نظر برای صفحه مربوطه
return query.Skip(excludedRows).Take(pageSize);
}
تشکر