using System.Web.Mvc; using System.Web.Routing; using System.Collections.Generic; using System.Text; using System.ComponentModel; namespace Infinicast.Jeremy.Controls { public class GridViewColumn { public string Name { get; set; } public string Heading { get; set; } public string BindingProperty { get; set; } public string DataFormat { get; set; } } public static class Helpers { public static string GridView(this HtmlHelper helper, string name, IEnumerable data, IEnumerable columns, object htmlAttributes) { StringBuilder sbGrid = new StringBuilder(); sbGrid.Append(string.Concat("")); //START THEAD sbGrid.Append(""); foreach (var column in columns) { sbGrid.Append(string.Concat("")); } sbGrid.Append(""); //END THEAD //START TBODY sbGrid.Append(""); foreach (var obj in data) { sbGrid.Append(""); var values = GetValues(obj); foreach (var column in columns) { sbGrid.Append(""); } sbGrid.Append(""); } sbGrid.Append(""); //END TBODY return sbGrid.ToString(); } public static IEnumerable Columns(this GridViewColumn s, params GridViewColumn[] values) { return (IEnumerable)values; } public static string GetAttributeString(this Dictionary htmlAttributes) { StringBuilder sbAttr = new StringBuilder(htmlAttributes.Count * 15); foreach (var item in htmlAttributes) { sbAttr.AppendFormat(" {0}=\"{1}\"", item.Key, item.Value); } return sbAttr.ToString(); } public static Dictionary GetValues(object values) { var ret = new Dictionary(); if (values != null) { foreach (PropertyDescriptor item in TypeDescriptor.GetProperties(values)) { ret.Add(item.Name, item.GetValue(values)); } } return ret; } } }
", column.Name, "
"); sbGrid.AppendFormat(column.DataFormat, values[column.BindingProperty]); sbGrid.Append("