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,59 @@
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web.Mvc;
namespace Kreta.Web.Helpers.Extension
{
public static class DataSetExtensions
{
public static List<SelectListItem> CreateMvcGroupedSelectListItem(this DataSet ds, string keyColumn, string valueColumn, string groupNamesColumn, string groupOrderColumn = null)
{
DataTable dt = ds.Tables.Count > 0 ? ds.Tables[0] : null;
if (dt == null)
{
return new List<SelectListItem>();
}
EnumerableRowCollection<DataRow> dataRowList = dt.AsEnumerable();
if (!string.IsNullOrWhiteSpace(groupOrderColumn))
{
dataRowList = dataRowList.OrderBy(x => x.Field<int>(groupOrderColumn));
}
var groups = dataRowList
.GroupBy(x => x.Field<string>(groupNamesColumn))
.Select(group => new KeyValuePair<string, SelectListGroup>(group.Key, new SelectListGroup { Name = group.Key }))
.ToDictionary(item => item.Key, item => item.Value);
var result = dt.Rows
.Cast<DataRow>()
.Select(item => new SelectListItem
{
Group = groups[item.Field<string>(groupNamesColumn)],
Text = item.Field<string>(valueColumn),
Value = item.Field<int>(keyColumn).ToString()
})
.ToList();
return result;
}
public static List<SelectListItem> CreateMvcSelectListItem(this DataSet ds, string keyColumn, string valueColumn)
{
DataTable dt = ds.Tables.Count > 0 ? ds.Tables[0] : null;
if (dt == null)
{
return new List<SelectListItem>();
}
EnumerableRowCollection<DataRow> dataRowList = dt.AsEnumerable();
var result = dt.Rows
.Cast<DataRow>()
.Select(item => new SelectListItem
{
Text = item.Field<string>(valueColumn),
Value = item.Field<int>(keyColumn).ToString()
})
.ToList();
return result;
}
}
}