예제 #1
0
        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);
        }
예제 #2
0
        ///// <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);
        }