[转]KendoUI系列:Grid

本文转自:http://www.cnblogs.com/libingql/p/3774879.html

1、基本使用

<div id="grid"></div>
<link href="@Url.Content("~/Content/kendo/2014.1.318/kendo.common.min.css")" rel="stylesheet" type="text/css" /> <link href="@Url.Content("~/Content/kendo/2014.1.318/kendo.default.min.css")" rel="stylesheet" type="text/css" /> <script src="@Url.Content("~/Scripts/kendo/2014.1.318/jquery.min.js")" type="text/javascript"></script> <script src="@Url.Content("~/Scripts/kendo/2014.1.318/kendo.web.min.js")" type="text/javascript"></script>
复制代码
<script type="text/javascript">
    $(function () {
        $("#grid").kendoGrid({
            dataSource: {
                transport: {
                    dataType: "json",
                    read: "/Province/GetProvinceList" }, pageSize: 10, }, pageable: { refresh: true, pageSizes: true, buttonCount: 5 }, columns: [{ field: "ProvinceID", title: "省份ID", width: 200 }, { field: "ProvinceNo", title: "省份编号" }, { field: "ProvinceName", title: "省份名称" }] }); }); </script>
复制代码

  效果预览:

  说明:pageSizes设置可选择每页显示的条数,buttonCount设置最多显示的页数,超出时则显示...。以上实现方式第一次从服务端加载出全部的数据,Kendo UI Grid进行客户端分页。

  2、绑定本地数据

<div id="grid"></div>
复制代码
<script type="text/javascript">
    $(function () {
        var provinces = [{ "ProvinceID": 1, "ProvinceNo": "110000", "ProvinceName": "北京市" }, { "ProvinceID": 2, "ProvinceNo": "120000", "ProvinceName": "天津市" }, { "ProvinceID": 3, "ProvinceNo": "130000", "ProvinceName": "河北省" }, { "ProvinceID": 4, "ProvinceNo": "140000", "ProvinceName": "山西省" }, { "ProvinceID": 5, "ProvinceNo": "150000", "ProvinceName": "内蒙古" }, { "ProvinceID": 6, "ProvinceNo": "210000", "ProvinceName": "辽宁省" }, { "ProvinceID": 7, "ProvinceNo": "220000", "ProvinceName": "吉林省" }, { "ProvinceID": 8, "ProvinceNo": "230000", "ProvinceName": "黑龙江" }, { "ProvinceID": 9, "ProvinceNo": "310000", "ProvinceName": "上海市" }, { "ProvinceID": 10, "ProvinceNo": "320000", "ProvinceName": "江苏省" }, { "ProvinceID": 11, "ProvinceNo": "330000", "ProvinceName": "浙江省" }, { "ProvinceID": 12, "ProvinceNo": "340000", "ProvinceName": "安徽省" }, { "ProvinceID": 13, "ProvinceNo": "350000", "ProvinceName": "福建省" }, { "ProvinceID": 14, "ProvinceNo": "360000", "ProvinceName": "江西省" }, { "ProvinceID": 15, "ProvinceNo": "370000", "ProvinceName": "山东省" }, { "ProvinceID": 16, "ProvinceNo": "410000", "ProvinceName": "河南省" }, { "ProvinceID": 17, "ProvinceNo": "420000", "ProvinceName": "湖北省" }, { "ProvinceID": 18, "ProvinceNo": "430000", "ProvinceName": "湖南省" }, { "ProvinceID": 19, "ProvinceNo": "440000", "ProvinceName": "广东省" }, { "ProvinceID": 20, "ProvinceNo": "450000", "ProvinceName": "广西" }, { "ProvinceID": 21, "ProvinceNo": "460000", "ProvinceName": "海南省" }, { "ProvinceID": 22, "ProvinceNo": "500000", "ProvinceName": "重庆市" }, { "ProvinceID": 23, "ProvinceNo": "510000", "ProvinceName": "四川省" }, { "ProvinceID": 24, "ProvinceNo": "520000", "ProvinceName": "贵州省" }, { "ProvinceID": 25, "ProvinceNo": "530000", "ProvinceName": "云南省" }, { "ProvinceID": 26, "ProvinceNo": "540000", "ProvinceName": "西藏" }, { "ProvinceID": 27, "ProvinceNo": "610000", "ProvinceName": "陕西省" }, { "ProvinceID": 28, "ProvinceNo": "620000", "ProvinceName": "甘肃省" }, { "ProvinceID": 29, "ProvinceNo": "630000", "ProvinceName": "青海省" }, { "ProvinceID": 30, "ProvinceNo": "640000", "ProvinceName": "宁夏" }, { "ProvinceID": 31, "ProvinceNo": "650000", "ProvinceName": "新疆" }, { "ProvinceID": 32, "ProvinceNo": "710000", "ProvinceName": "台湾省" }, { "ProvinceID": 33, "ProvinceNo": "810000", "ProvinceName": "香港" }, { "ProvinceID": 34, "ProvinceNo": "820000", "ProvinceName": "澳门" }];

        $("#grid").kendoGrid({ dataSource: { data: provinces, schema: { model: { fields: { ProvinceID: { type: "number" }, ProvinceNo: { type: "string" }, ProvinceName: { type: "string" } } } }, pageSize: 10 }, pageable: { input: true, numeric: false, messages: { display: "{0} - {1} 共 {2} 条数据", empty: "没有数据", page: "页", of: "/ {0}", itemsPerPage: "条每页", first: "第一页", previous: "前一页", next: "下一页", last: "最后一页", refresh: "刷新" } }, columns: [{ field: "ProvinceID", title: "省份ID" }, { field: "ProvinceNo", title: "省份编号" }, { field: "ProvinceName", title: "省份名称" }] }); }); </script>
复制代码

  3、绑定远程数据

<div id="grid"></div>
复制代码
<script type="text/javascript">
    $(function () {
        var dataSource = new kendo.data.DataSource({ transport: { read: { type: "post", url: "/Province/GetProvincePagedList", dataType: "json", contentType: "application/json" }, parameterMap: function (options, operation) { if (operation == "read") { var parameter = { page: options.page, pageSize: options.pageSize }; return kendo.stringify(parameter); } } }, batch: true, pageSize: 10, schema: { data: function (d) { return d.data; }, total: function (d) { return d.total; } }, serverPaging: true }); $("#grid").kendoGrid({ dataSource: dataSource, pageable: { pageSizes: true, buttonCount: 5, messages: { display: "显示{0}-{1}条,共{2}条", empty: "没有数据", page: "页", of: "/ {0}", itemsPerPage: "条/页", first: "第一页", previous: "前一页", next: "下一页", last: "最后一页", refresh: "刷新" } }, columns: [{ field: "ProvinceID", title: "省份ID", width: 150 }, { field: "ProvinceNo", title: "省份编号" }, { field: "ProvinceName", title: "省份名称" }] }); }); </script>
复制代码
复制代码
public ActionResult GetProvincePagedList(int page, int pageSize)
{
    ctx.Configuration.ProxyCreationEnabled = false;

    return Json(new { data = ctx.Provinces.OrderBy(p => p.ProvinceID).Skip((page - 1) * pageSize).Take(pageSize), total = ctx.Provinces.Count() }, JsonRequestBehavior.AllowGet); }
复制代码

  效果预览:

  要点说明:

  1>、dataSource中read的type一定要设置为post,不能为默认的get,否则服务端无法接收page及pageSize参数。

  2>、dataSource中serverPaging需要设置为true,启动服务端分页。

 
 
分类: KendoUI
Kendo UI框架提供了强大的Excel导出功能,通过Grid的saveAsExcel能方便地导出Grid中的数据,而且格式美观大方,使用起来也非常方便。但是在实际使用中不是很理想,主要有以下两个问题: 1. 导出的列数据是原始值 Kendo UI默认导出的是该列的value值,及查出来的值,有时候我们会用template渲染一下导出的列,比如将“Y”显示成“是”,把“N”显示成“否”。而Kendo UI导出的却是Y/N这种只有程序员看得懂的数据库标识,显然不是我们需要的,这种情况非常常见。 2. 不能灵活控制可导出的列 Kendo UI的Excel导出主要看两点,一是该列(column)是field字段,而不是自定义的name;二是该列不是隐藏的(hidden:true)。这样我们无法灵活导出我们需要的列。 为了解决上面两个问题,我查看了Kendo UI的源代码,提取并改进了源代码。主要更改点及使用方法请看下面源代码。主要针对以上两点做了更改,只需要在grid定义columns时加上isExport或exportTemplate即可: 在导出数据,先看该列有没有自定义exportTemplate(),没有则看Kendo UI自带的template(),再没有才会导出查出来的值。 判断是否导出该列不再看hidden属性,而是看列的isExport属性,如果为false则不导出,其它情况一律导出该列。 经过这两个更改,基本可以应对所有业务场景,可以方便快捷地开发了! 但要注意,Kendo UI自带的导出功能无法应用于导出大量数据,似乎是浏览器的jvm溢出了,建议超过5万条的数据导出还是老老实实写后台导出功能吧。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值