紙殼CMS(ZKEACMS)裡的Grid是一個TagHelper
,是對jQuery外掛datatables的一個配置封裝。
Easy.Mvc.TagHelpers.GridTagHelper
grid的使用很簡單,設定Model,使用<grid>標籤就可以了:
@model ArticleEntity <grid></grid>
Grid的預設值
1. ModelType
列表預設使用View設定的Model的Type作為Grid的ModelType,並使用它的配置後設資料來呈現列表。例如:@model ArticleEntity
列表則會使用ArticleEntity
的後設資料ArticleEntityMeta
來呈現列表。如果要特別指定這個ModelType,可以在Grid中進行設定:
<grid model-type="typeof(ArticleEntity)"></grid>
2. 編輯
編輯連結
預設的編輯連結是當前的Controller的Edit Action加主鍵。如文章,ArticleController,則編輯連結則是:/admin/Article/Edit/{id},也可以直接指定這個Action:
<grid edit="Edit"></grid>
編輯UI模板
預設的編輯模板是一個帶有編輯圖示的連結:
<a href="{0}" class="glyphicon glyphicon-edit"></a>
也可以在grid中設定這個模板,比如設定成按鈕:
<grid edit-template="@("<a href="{0}" class="btn btn-default">Edit</a>")"></grid>
設定是否可編輯:
<grid edit-able="false"></grid>
3. 刪除
刪除連結
預設的刪除連結是當前的Controller的Delete Action加主鍵。如文章,ArticleController,則刪除連結則是:/admin/Article/Delete/{id},也可以直接指定這個Action:
<grid delete="Delete"></grid>
刪除UI模板
預設的編輯模板是一個帶有刪除圖示連結:
<a href="{0}" class="glyphicon glyphicon-remove"></a>
也可以在grid中設定這個模板,比如設定成按鈕:
<grid delete-template="@("<a href="{0}" class="btn btn-danger">Delete</a>")"></grid>
注意:修改了這個刪除模板,可能要注意同時配合修改
~/wwwroot/js/dataTable.js
設定是否可刪除:
<grid delete-able="false"></grid>
4. 資料來源
預設的資料來源是當前的Controller的GetList Action,以Post的方式獲取資料。也可以直接指定這個Action:
<grid source="GetList"></grid>
返回資料示例:
[HttpPost] public virtual IActionResult GetList(DataTableOption query) { var pagin = new Pagination { PageSize = query.Length, PageIndex = query.Start / query.Length }; var expression = query.AsExpression<TEntity>(); var order = query.GetOrderBy<TEntity>(); if (order != null) { if (query.IsOrderDescending()) { pagin.OrderByDescending = order; } else { pagin.OrderBy = order; } } var entities = Service.Get(expression, pagin); return Json(new TableData(entities, pagin.RecordCount, query.Draw)); }
在列表中顯示欄位
列表的欄位顯示,需要在後設資料裡面配置。後設資料配置http://www.zkea.net/codesnippet/detail/post-94.html
呼叫.ShowInGrid()
該欄位就會顯示在列表中:
ViewConfig(m => m.ImageUrl).AsTextBox().MediaSelector().ShowInGrid();
配置搜尋
.ShowInGrid().Search(Query.Operators.Contains)
配置UI模板
.ShowInGrid().SetGridColumnTemplate("<img src="{imageUrl}"/>");
注意:欄位名使用的是駝峰命名方式,如欄位名是
ImageUrl
,則使用的時候是{imageUrl}
排序
grid預設以最後更新時間(LastUpdateDate)倒序。也可以直接在grid中進行設定:
<grid order-asc="ID"></grid> <grid order-desc="ID"></grid>
自定義樣式
可以使用以下方式進行設定自定義樣式class:
<grid grid-class="table"></grid>