86 lines
3.6 KiB
C#
86 lines
3.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Text;
|
|
using Kendo.Mvc;
|
|
using Kendo.Mvc.Extensions;
|
|
using Kendo.Mvc.UI;
|
|
using Kreta.Core;
|
|
using Kreta.Framework.Util;
|
|
|
|
namespace Kreta.Web.Helpers.Grid
|
|
{
|
|
public static class Converter
|
|
{
|
|
public static GridParameters GridParameter(DataSourceRequest request)
|
|
{
|
|
var gridParameters = new GridParameters
|
|
{
|
|
LoadResultSetInfo = true
|
|
};
|
|
|
|
IList<SortDescriptor> sort = request.Sorts;
|
|
if (sort != null && sort.Count > 0)
|
|
{
|
|
var sortString = new StringBuilder(string.Empty);
|
|
foreach (SortDescriptor item in sort)
|
|
{
|
|
gridParameters.OrderDictionary.Add(item.Member, item.SortDirection);
|
|
|
|
sortString.Append(item.Member);
|
|
sortString.Append(item.SortDirection == ListSortDirection.Ascending ? " ASC" : " DESC");
|
|
sortString.Append(",");
|
|
}
|
|
|
|
gridParameters.OrderBy = sortString.ToString(0, sortString.Length - 1);
|
|
}
|
|
|
|
gridParameters.FirstRow = (request.Page - 1) * request.PageSize;
|
|
gridParameters.LastRow = request.Page * request.PageSize - 1;
|
|
|
|
return gridParameters;
|
|
}
|
|
|
|
[Obsolete(@"A ToDataSourceResult<T>-t kell használni model listákkal, mivel ezeket mostmár tudjuk sorbarendezni a GridParameters-el,
|
|
így nincs szükség rá, hogy elmenjen a DataSet a Web-re ezért nincs is szükség itt sorrenezni őket!")]
|
|
public static DataSourceResult ToDataSourceResult(this DataSet dataSet, DataSourceRequest request = null)
|
|
{
|
|
if (dataSet.Tables.Count < 1)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
DataTable firstLevel = dataSet.Tables[0];
|
|
DataSourceResult result = firstLevel.ToDataSourceResult(request ?? new DataSourceRequest());
|
|
result.Total = Convert.ToInt32(firstLevel.ExtendedProperties["RowCount"]);
|
|
return result;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Generikus objektumlistából készítünk Kendo-s DataSourceResult-ot a Kendo-s grid-eknek.
|
|
/// Sorba rendezzük az adatokat és beállítjuk a lapozást a GridParameters objektum alapján a SortingAndPaging extension method-dal.
|
|
/// Végül visszaadjuk az eredményt, beállítva az összes elem számát is(ez az összes elem számának megjelenítéséhez kell a grid-en).
|
|
/// </summary>
|
|
/// <typeparam name="T">A T bármilyen típusú objektum lehet, de leginkább Model-ekkel kellene használni.</typeparam>
|
|
/// <param name="itemList">A T típusú objektumlista, amivel dolgozunk.</param>
|
|
/// <param name="gridParameters">A GridParameters property-jei(OrderList, FirstRow, LastRow) alapján határozzuk meg, hogy milyen paraméterek alapján rendezzünk sorba és állítjuk be a lapozást.</param>
|
|
/// <returns></returns>
|
|
public static DataSourceResult ToDataSourceResult<T>(this List<T> itemList, GridParameters gridParameters = null)
|
|
{
|
|
if (itemList == null)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
List<T> data = gridParameters == null ? itemList : itemList.SortingAndPaging(gridParameters.OrderDictionary, gridParameters.FirstRow, gridParameters.LastRow);
|
|
var dataSourceResult = new DataSourceResult
|
|
{
|
|
Data = data,
|
|
Total = itemList.Count
|
|
};
|
|
|
|
return dataSourceResult;
|
|
}
|
|
}
|
|
}
|