kendoui-grid篇
kendo确实是个好东西,能够让我们专注于后端开发,无需在效果呈现上花大力气,唯一的缺点,它是收费的,但是我目前还没发现为嘛要掏钱,因为free的也满足了我的需求。
kendoUI For asp.mvc:http://demos.telerik.com/aspnet-mvc/
<div id="page-wrapper">
<div class="row">
<div class="col-lg-12">
<h1 class="page-header">新闻管理</h1>
</div>
<!-- /.col-lg- -->
</div>
<!-- /.row -->
<div class="row">
<div class="col-lg-12">
<div class="panel panel-default">
<div class="panel-body">
<h3>新闻列表</h3>
<div class="table-responsive">
@(Html.Kendo().Grid<WebSite.Models.NewsViewsModel>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(p => p.Id).Title("序号").Filterable(false);
columns.Bound(p => p.Title).Title("新闻标题").Sortable(false);
columns.Bound(p => p.NewsTypeName).Title("新闻类别").Sortable(false).Filterable(filterable => filterable.UI("NewsTypeFilter"));
columns.Bound(p => p.VisitCount).Title("浏览次数").Filterable(false);
columns.Bound(p => p.WriteTime).Title("发布时间").Sortable(false).Filterable(false);
columns.Bound(p => p.NickName).Title("发布人").Sortable(false).Filterable(filterable => filterable.UI("AdminFilter"));
columns.Command(command => command.Custom("编辑").Click("showDetails"));
columns.Command(command =>
{
command.Destroy();
});
})
.Sortable()
.Pageable()
.Filterable()
.DataSource(dataSource => dataSource
.Ajax()
.Events(events => events.Error("error_handler"))
.Model(model => model.Id(p => p.Id))
.PageSize()
.Read(read => read.Action("News_Read", "Admin"))
.Destroy(x => x.Action("NewsDelete", "Admin"))
)
)
</div>
</div>
</div>
</div>
<!-- /.col-lg- -->
</div>
<!-- /.row --> </div>
<!-- /#page-wrapper -->
<script type="text/javascript">
function error_handler(e) {
if (e.errors) {
var message = "Errors:\n";
$.each(e.errors, function (key, value) {
if ('errors' in value) {
$.each(value.errors, function () {
message += this + "\n";
});
}
});
alert(message);
}
} function showDetails(e) {
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
window.location.href = '/Admin/NewsAddOrUpdate?id='+dataItem.Id;
} function NewsTypeFilter(element)
{
element.kendoDropDownList({
dataSource: {
transport: {
read: "@Url.Action("Get_NewsType")"
}
},
optionLabel: "--选择新闻类别--"
});
} function AdminFilter(element)
{
element.kendoDropDownList({
dataSource: {
transport: {
read: "@Url.Action("Get_Admin")"
}
},
optionLabel: "--选择管理员--"
});
}
</script>
这是前端代码,很简洁,如果我们自己实现类似功能,那就是一大堆js,功能还没它好,支持排序,查询。。。分页。。。
public ActionResult NewsList()
{
return View();
} public ActionResult Get_NewsType()
{
var lservice = UnitOfWork.NewsTypes;
return Json(lservice.Select(e => e.NewsTypeName).Distinct(), JsonRequestBehavior.AllowGet);
} public ActionResult Get_Admin()
{
var lservice = UnitOfWork.Admins;
return Json(lservice.Select(e => e.NickName).Distinct(), JsonRequestBehavior.AllowGet);
} private List<SelectListItem> getNewsType()
{
List<SelectListItem> list = new List<SelectListItem>(); var lnewstype = UnitOfWork.NewsTypes.ToList();
foreach (var item in lnewstype)
{
SelectListItem obj = new SelectListItem();
obj.Text = item.NewsTypeName;
obj.Value = item.Id.ToString();
list.Add(obj);
}
return list;
} public ActionResult News_Read([DataSourceRequest]DataSourceRequest request)
{
var lnews = UnitOfWork.NewsInfos; //filter
if (request.Filters.Count() > )
{
foreach (var item in request.Filters)
{
string type = item.GetType().ToString();
if (type == "Kendo.Mvc.FilterDescriptor")
{
var model = ((Kendo.Mvc.FilterDescriptor)item);
if (model.Member == "Title")
{
lnews = (IQueryable<NewsInfo>)lnews.Where(x => x.Title == model.Value.ToString());
}
else if (model.Member == "NewsTypeName")
{
lnews = (IQueryable<NewsInfo>)lnews.Where(x => x.NewsType.NewsTypeName == model.Value.ToString());
}
else if (model.Member == "NickName")
{
lnews = (IQueryable<NewsInfo>)lnews.Where(x => x.Admin.NickName == model.Value.ToString());
}
}
else
{
var model = ((Kendo.Mvc.CompositeFilterDescriptor)item);
foreach (var i in model.FilterDescriptors)
{
var cur = ((Kendo.Mvc.FilterDescriptor)i);
if (cur.Member == "Title")
{
lnews = (IQueryable<NewsInfo>)lnews.Where(x => x.Title == cur.Value.ToString());
}
else if (cur.Member == "NewsTypeName")
{
lnews = (IQueryable<NewsInfo>)lnews.Where(x => x.NewsType.NewsTypeName == Convert.ToString(cur.Value));
}
else if (cur.Member == "NickName")
{
lnews = (IQueryable<NewsInfo>)lnews.Where(x => x.Admin.NickName == Convert.ToString(cur.Value));
}
}
}
}
} int nTotalCount = lnews.Count(); //Apply sorting
if (request.Sorts.Count() == )
{
request.Sorts.Add(new SortDescriptor("Id", ListSortDirection.Descending));
}
foreach (SortDescriptor sortDescriptor in request.Sorts)
{
if (sortDescriptor.SortDirection == ListSortDirection.Ascending)
{
switch (sortDescriptor.Member)
{
case "Id":
lnews = lnews.OrderBy(x => x.Id);
break;
case "VisitCount":
lnews = lnews.OrderBy(x => x.VisitCount);
break;
}
}
else
{
switch (sortDescriptor.Member)
{
case "Id":
lnews = lnews.OrderByDescending(x => x.Id);
break;
case "VisitCount":
lnews = lnews.OrderByDescending(x => x.VisitCount);
break;
}
}
} List<NewsViewsModel> list = new List<NewsViewsModel>(); lnews = lnews.Skip((request.Page - ) * request.PageSize).Take(request.PageSize); foreach (var item in lnews)
{
NewsViewsModel model = new NewsViewsModel();
model.Id = item.Id;
model.AdminId = item.Admin.Id;
model.NewsContent = item.NewsContent;
model.NewsTypeId = item.NewsTypeId;
model.NewsTypeName = item.NewsType.NewsTypeName;
model.NickName = item.Admin.NickName;
model.Title = item.Title;
model.VisitCount = item.VisitCount;
model.WriteTime = item.WriteTime.ToString();
list.Add(model);
} var result = new DataSourceResult()
{
Data = list,
Total = nTotalCount
};
return Json(result, JsonRequestBehavior.AllowGet);
}
后台代码也就获取grid数据时,复杂一些。。总体还是能接受的

kendoui-grid篇的更多相关文章
- Tkinter教程之Grid篇
本文转载自:http://blog.csdn.net/jcodeer/article/details/1813196 '''Tkinter教程之Grid篇'''# Tkinter参考中最推荐使用的一个 ...
- KendoUI Grid Pager部分 Nan-Nan of x Items
相关问题: http://stackoverflow.com/questions/23941065/pager-error-in-kendo-gridnan-nan-of-1-items http:/ ...
- kendoUI grid 过滤时出错:TypeError toLowerCase is not a function
错误原因:类型不一致. 有些过滤类型为字符串,有些为整型时.
- kndo grid:通过checkbox 实现多选和全选
在kendo grid 里要想通过checkbox 实现多选和权限,我们就要通过templeate 和input 标签对kendo grid 进行自定义 1. 在column 里面加入一列checkb ...
- Kendo Grid:将Edit button 移到grid view 得顶部
因为kendo grid 得toolbar 里不包括Edit button,所以我们要先用template 创建一个自定义得edit button,然后再对这个button实现edit 功能. < ...
- 封装扩展Kendo UI Grid
封装后的代码如下: function DataGrid(options) { this.options = { height: "100%", sortable: true, re ...
- kendo ui 好用的小部件--grid
Kendo Ui Grid控件,继承至Widget. https://demos.telerik.com/kendo-ui/grid/index 快速上手教程 下面的代码来自本教程 做表格时非常方 ...
- Kendo UI Grid 使用总结
Kendo UI Grid控件的功能强大,这里将常用的一些功能总结一下. Kendo UI Grid 固定列 在使用Gird控件显示数据时,如果数据列过多,会出现横向滚动条,很多情况下,我们希望某些列 ...
- TGL站长关于常见问题的回复
问题地址: http://www.thegrouplet.com/thread-112923-1-1.html 问题: 网站配有太多的模板是否影响网站加载速度 月光答复: wp不需要删除其他的模板,不 ...
- kendoui treeview grid spreadsheet
treeview 傻子方式获取id <!DOCTYPE html> <html> <head> <title>API</title> < ...
随机推荐
- RunAsAdmin in windows 8
function RunAsAdmin(hWnd: HWND; filename: string; Parameters: string): Boolean; { See Step 3: Redesi ...
- ADO.NET基础01(ADO.NET组成,数据库的方式,SqlCommand,SqlDataReader)
什么是ADO.NET: ADO.NET就是一组类库,这组类库可以让我们通过程序的方式访问数据库,就像System.IO下的类操作文件一样, System.Data.这组类是用来操作数据库(不光是MSS ...
- Spring Boot实现一个监听用户请求的拦截器
项目中需要监听用户具体的请求操作,便通过一个拦截器来监听,并继续相应的日志记录 项目构建与Spring Boot,Spring Boot实现一个拦截器很容易. Spring Boot的核心启动类继承W ...
- ubuntu set host name
http://wiki.joyent.com/wiki/display/jpc2/Setting+the+Host+Name+on+a+Linux+VM Set the host name in th ...
- Android Material Design-TabLayout的使用
TabLayout 位于 android.support.design.widget.TabLayout. 一般与 ViewPager 结合在一起使用.以前有开源库 viewpagerindicato ...
- [CF676C]Vasya and String(尺取法,原题)
题目链接:http://codeforces.com/contest/676/problem/C 原题题解链接:http://www.cnblogs.com/vincentX/p/5405468.ht ...
- oracle判断一个字符串中是否包含另外一个字符串
select * from a where instr(a,b)>0; 用于实现B字段是A字段中的某一部分的时候,要论顺序或者要相邻的字符. 如果想要不论顺序或者不相邻的字符时,定义函数可以实现 ...
- poj 2411 Mondriaan's Dream(状态压缩dP)
题目:http://poj.org/problem?id=2411 Input The input contains several test cases. Each test case is mad ...
- Android百度地图
帖子 热搜: 二维码 聊天 二维码扫描 传感器 游戏 定位 手势绘图 小项目 相框 绘图 涂鸦 拨打电话 记事本 定时器 通话记录 短信群发 listview 音乐播放器 项目例子 百度地 ...
- HDU 4902
数据太弱,直接让我小暴力一下就过了,一开始没注意到时间是15000MS,队友发现真是太给力了 #include <cstdio> #include <cstring> ],x[ ...