public DataTableColumnBuilder ColumnFor(string propName) { if (IndexesDic.ContainsKey(propName)) { throw new Exception($"Column {propName} is already Set."); } IndexesDic[propName] = _currentColumnIndex++; DataTableColumnBuilder column = new DataTableColumnBuilder(propName); this.Columns.Add(column); return(column); }
///// <summary> ///// Add a column to the factory ///// </summary> ///// <typeparam name="T"></typeparam> ///// <returns></returns> //public DataTableColumnBuilder Add<T>() //{ // DataTableColumnBuilder column = new DataTableColumnBuilder(); // this.Columns.Add(column); // return column; //} /// <summary> /// Add a column to the factory /// </summary> /// <param name="expression"></param> /// <returns></returns> public DataTableColumnBuilder ColumnFor <T>(Expression <Func <TModel, T> > expression) { var propertyInfo = PropertyHelpers.GetPropertyInfo(expression); if (IndexesDic.ContainsKey(propertyInfo.Name)) { throw new Exception($"Column {propertyInfo.Name} is already Set."); } IndexesDic[propertyInfo.Name] = _currentColumnIndex++; DataTableColumnBuilder column = new DataTableColumnBuilder(propertyInfo) { Expression = expression, // TODO: try use InputExtensions.HiddenFor() }; //ViewContext viewContext = htmlHelper.ViewContext; // viewContext.ViewData.Model = //System.Web.Mvc.HtmlHelper<TModel> htmlHelper2 = new HtmlHelper<TModel>(htmlHelper.ViewContext, htmlHelper.ViewDataContainer);// htmlHelper; //var result=InputExtensions.HiddenFor(htmlHelper2, expression).ToHtmlString(); column.Type(GetType(propertyInfo)); this.Columns.Add(column); return(column); }