/// <summary>
        /// 添加显示枚举值的标签列
        /// </summary>
        /// <param name="columns">列列表</param>
        /// <param name="member">成员</param>
        /// <param name="enumType">枚举类型</param>
        /// <param name="width">宽度</param>
        /// <returns></returns>
        public static AjaxTableColumn AddEnumLabelColumn(
            this IList <AjaxTableColumn> columns, string member, Type enumType, string width = null)
        {
            var enums        = enumType.GetTypeInfo().GetEnumValues().OfType <Enum>();
            var classMapping = new HtmlString(JsonConvert.SerializeObject(
                                                  enums.ToDictionary(e => (int)(object)e, e => {
                var attr = e.GetAttribute <LabelCssClassAttribute>();
                return(attr == null ? null : attr.CssClass);
            })));
            var nameMapping = new HtmlString(JsonConvert.SerializeObject(
                                                 enums.ToDictionary(e => (int)(object)e, e => new T(e.GetDescription()))));
            var templateManager = Application.Ioc.Resolve <TemplateManager>();
            var column          = new AjaxTableColumn()
            {
                Key          = member,
                Width        = width,
                HeadTemplate = HttpUtils.HtmlEncode(new T(member)),
                CellTemplate = templateManager.RenderTemplate(
                    "common.base/tmpl.ajax_table.label_column_cell.html",
                    new { classMapping, nameMapping, member })
            };

            columns.Add(column);
            return(column);
        }
Ejemplo n.º 2
0
    public void Column <TKey>(Func <T, HelperResult> th, Func <T, HelperResult> td, Expression <Func <T, TKey> > keySelector)
    {
        AjaxTableColumn <T> col = new AjaxTableColumn <T>()
        {
            Th = th, Td = td, KeySelector = keySelector, KeyType = typeof(TKey)
        };

        col.OrderData = (IQueryable <T> data, bool asc) => asc?data.OrderBy(keySelector) : data.OrderByDescending(keySelector);

        table.Columns.Add(col);
    }
        /// <summary>
        /// 添加Html成员列
        /// 成员值会作为Html嵌入到页面中,请做好安全处理
        /// </summary>
        /// <param name="columns">列列表</param>
        /// <param name="member">成员</param>
        /// <param name="width">宽度</param>
        public static AjaxTableColumn AddHtmlColumn(
            this List <AjaxTableColumn> columns, string member, string width = null)
        {
            var column = new AjaxTableColumn()
            {
                Key          = member,
                Width        = width,
                HeadTemplate = HttpUtils.HtmlEncode(new T(member)),
                CellTemplate = string.Format("<%=row.{0}%>", HttpUtils.HtmlEncode(member))
            };

            columns.Add(column);
            return(column);
        }
        /// <summary>
        /// 添加序号列(从1开始递增,不涉及到数据)
        /// </summary>
        /// <param name="columns">列列表</param>
        /// <param name="width">宽度</param>
        public static AjaxTableColumn AddNoColumn(
            this List <AjaxTableColumn> columns, string width = "2%")
        {
            var column = new AjaxTableColumn()
            {
                Key          = "No",
                Width        = width,
                HeadTemplate = "",
                CellTemplate = "<%-(result.PageNo-1)*result.PageSize+index+1%>"
            };

            columns.Add(column);
            return(column);
        }
        /// <summary>
        /// 添加点击时执行指定代码的列
        /// </summary>
        /// <param name="columns">列列表</param>
        /// <param name="member">成员</param>
        /// <param name="onClick">点击时执行的代码</param>
        /// <param name="width">宽度</param>
        /// <returns></returns>
        public static AjaxTableColumn AddOnClickColumn(
            this List <AjaxTableColumn> columns, string member, string onClick, string width = null)
        {
            var templateManager = Application.Ioc.Resolve <TemplateManager>();
            var column          = new AjaxTableColumn()
            {
                Key          = member,
                Width        = width,
                HeadTemplate = HttpUtils.HtmlEncode(new T(member)),
                CellTemplate = templateManager.RenderTemplate(
                    "common.base/tmpl.ajax_table.onclick_cell.html",
                    new { member, onClick })
            };

            columns.Add(column);
            return(column);
        }
        /// <summary>
        /// 添加树节点列
        /// </summary>
        /// <param name="columns">列列表</param>
        /// <param name="nameMember">名称成员</param>
        /// <param name="levelMember">层次成员,开始值是0</param>
        /// <param name="noChildsMember">判断是否没有子节点的成员</param>
        /// <param name="width">宽度</param>
        /// <returns></returns>
        public static AjaxTableColumn AddTreeNodeColumn(
            this IList <AjaxTableColumn> columns,
            string nameMember, string levelMember, string noChildsMember, string width = null)
        {
            var templateManager = Application.Ioc.Resolve <TemplateManager>();
            var column          = new AjaxTableColumn()
            {
                Key          = nameMember,
                Width        = width,
                HeadTemplate = HttpUtils.HtmlEncode(new T(nameMember)),
                CellTemplate = templateManager.RenderTemplate(
                    "common.base/tmpl.ajax_table.tree_node_column_cell.html",
                    new { nameMember, levelMember, noChildsMember })
            };

            columns.Add(column);
            return(column);
        }
        /// <summary>
        /// 添加图片列
        /// </summary>
        /// <param name="columns">列列表</param>
        /// <param name="member">成员</param>
        /// <param name="width">宽度</param>
        /// <param name="imageWidth">图片宽度</param>
        /// <param name="imageHeight">图片高度</param>
        /// <returns></returns>
        public static AjaxTableColumn AddImageColumn(
            this IList <AjaxTableColumn> columns, string member,
            string width = "30", string imageWidth = "30", string imageHeight = "30")
        {
            var templateManager = Application.Ioc.Resolve <TemplateManager>();
            var column          = new AjaxTableColumn()
            {
                Key          = member,
                Width        = width,
                HeadTemplate = HttpUtils.HtmlEncode(new T(member)),
                CellTemplate = templateManager.RenderTemplate(
                    "common.base/tmpl.ajax_table.image_column_cell.html",
                    new { member, imageWidth, imageHeight })
            };

            columns.Add(column);
            return(column);
        }
 /// <summary>
 /// 移动列到指定的列前面
 /// </summary>
 /// <param name="columns">列列表</param>
 /// <param name="column">需要移动的列</param>
 /// <param name="key">指定的列的识别键</param>
 public static void MoveBefore(
     this List <AjaxTableColumn> columns, AjaxTableColumn column, string key)
 {
     columns.Remove(column);
     columns.AddBefore(c => c.Key == key, column);
 }
Ejemplo n.º 9
0
 /// <summary>
 /// 移动列到指定的列后面
 /// </summary>
 /// <param name="columns">列列表</param>
 /// <param name="column">需要移动的列</param>
 /// <param name="key">指定的列的识别键</param>
 public static void MoveAfter(
     this IList <AjaxTableColumn> columns, AjaxTableColumn column, string key)
 {
     columns.Remove(column);
     columns.AddAfter(c => c.Key == key, column);
 }