我想使用Kendo UI Grid组件(排序,过滤,分页),但我的应用程序有一个N层架构(数据访问层,业务层和Web项目),所以我无法提供一个DbSet到服务器绑定。
目前,我正在将Grid与我数据库中的所有实体绑定,以便Grid可以处理这些数据。但是我想知道一种避免做“全部”请求的方法......
无论如何使用这种架构吗?
答案 0 :(得分:0)
好的,我发现a thread这个家伙和我有同样的“问题”(n层申请)。
显然唯一的解决方案是实现自定义服务器绑定(see the doc)。
答案 1 :(得分:0)
最好使用ViewModel
,以防止从Entity Class
直接访问View
。以下是在KendoGrid
n层应用程序中使用ASP.NET MVC
的示例:
<强>控制器:强>
private EFDbContext db = new EFDbContext();
public ActionResult Index_Read([DataSourceRequest] DataSourceRequest request)
{
var dataContext = db.YourEntity;
var result = dataContext.Select(m => new
YourViewModel
{
ID = m.ID,
Name= m.Name
//code omitted for brevity
}
).ToDataSourceResult(request);
return Json(result, JsonRequestBehavior.AllowGet);
}
查看:强>
@(Html.Kendo().Grid<YourViewModel>()
.Name("YourGrid")
.Columns(columns =>
{
columns.Bound(m => m.ID).Title("Id");
columns.Bound(m => m.Name).Title("Contact Person");
})
.Reorderable(r => r.Columns(true))
.Pageablee()
.Scrollable()
.Groupable()
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("Index_Read", "YourController"))
.ServerOperation(false)
.PageSize(12)
)
)
希望这会有所帮助......