/// <summary> /// Data property name that DataTables will use to set tr element DOM IDs. /// </summary> /// <param name="rowId"></param> /// <returns></returns> public TableOptionsFactory <TModel> RowId <T>(Expression <Func <TModel, T> > expression) { var propertyInfo = PropertyHelpers.GetPropertyInfo(expression); _jObject.Add("rowId", new JValue(propertyInfo.Name)); return(this); }
///// <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); }