Telerik Grid Custom Binding by TelerikMvcGridCustomBindingHelper


Telerik Grid可設置.Sortable()、.Pageable()、.Groupable()、.Filterable()達到排序、分頁、分群、過濾資料的效果,但這是使用Telerik所提供的binding為前提。

若採用CustomBinding,以上效果(排序、分頁、分群、過濾)全部都要自行實作,實作方式請參考官網CustomBinding,或是直接下載官方論壇提供的範例


依官方解法,每次CustomBinding都要針對Binding的資料結構各實作paging、sorting、grouping一次,尤其grouping更要事先設計好針對那些欄位是可以排序的。
若覺得官方解法太麻煩~~是真的很麻煩ε(┬┬_┬┬)3 ,或是資料結構過於複雜無法呈現,或你跟我一樣懶惰XDD
建議可搭配另一套件TelerikMvcGridCustomBindingHelper,達到更彈性、修改更少的寫法!

承接前篇文章Telerik Grid Custom Binding,BL與View都不用做任何改變,針對Controller所需異動描述如下

1. 至CodePlex下載TelerikMvcGridCustomBindingHelper套件
解壓或用NuGet安裝裡面二支library
download:http://tgh.codeplex.com/
library:TelerikMvcGridCustomBindingHelper.dll、TelerikMvcGridCustomBindingHelper.NHibernate.dll
version:1.10.15.247
notice:Telerik要記得更新到2012 Q2

2. 加入AutoMapper參考
download link:使用NuGet下指令安裝,指令為PM> Install-Package AutoMapper 
version:2.1.267.0

3. 把Helper要用到的另二種library下載回來參考
download:http://nhforge.org/Default.aspx
library:NHibernate.dll、Iesi.Collections.dll
version:3.3.1.4000

4. 修改Controller寫法
[GridAction(EnableCustomBinding = true)]
public ActionResult ListPO_CustomBinding(GridCommand command)
{
int totalCount = POService.QueryPOListIndex(command);
ViewBag.POTotalCount = totalCount;
List<PO> data = POService.QueryPOList(command);

//使用TelerikMvcGridCustomBindingHelper
for (int i = 0; i < (command.Page - 1) * command.PageSize; i++)
{
PO dd = new PO();
data.Insert(0, dd);
}
IQueryable<PO>
query = data.AsQueryable();
var gridHelper = new GridCustomBindingHelper<PO, PO>(command, query);
var gridModel = gridHelper.BuildGridModel();
gridModel.Total = ViewBag.POTotalCount;
return View(gridModel);

}


仔細比較與前篇寫法的差異處(黃色highlight),只要修改Controller一點點就省去實作N遍的paging、sorting、grouping
真是太感謝TelerikMvcGridCustomBindingHelper的開發團隊╭ (′▽`)╭(′▽`)╭(′▽`)╯

2 則留言:

kolen 提到...

正妹,好高深喔,有空教一下,QAQ。

piggy 提到...

@kolen:你們又不用MVC嘞:P