/// <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); }
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); }
/// <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); }