This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View file

@ -0,0 +1,86 @@
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 , 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;
}
}
}