1.基础用法
页面标签:结构如下:
<kendo:grid name="grid" groupable="true" sortable="true" style="height:550px;">
<kendo:grid-columns>
<kendo:grid-column title="Company Name" field="companyName" />
</kendo:grid-columns>
<kendo:dataSource pageSize="10">
<kendo:dataSource-schema>
<kendo:dataSource-schema-model>
<kendo:dataSource-schema-model-fields>
<kendo:dataSource-schema-model-field name="companyName" type="string" />
</kendo:dataSource-schema-model-fields>
</kendo:dataSource-schema-model>
</kendo:dataSource-schema>
<kendo:dataSource-transport>
<kendo:dataSource-transport-read url="${transportReadUrl}"/>
</kendo:dataSource-transport>
</kendo:dataSource>
</kendo:grid>
2.绑定数据:
本地绑定:kendo:dataSource中data属性填写为el表达式拿到的内容
<kendo:dataSource data="${products}" pageSize="20">
ajax请求绑定:
<kendo:dataSource>的子标签<kendo:dataSource-transport>中<kendo:dataSource-transport-read>的url设置请求路径
< kendo:dataSource pageSize = "20" serverPaging = "true" serverSorting = "true" serverFiltering = "true" serverGrouping = "true" > < kendo:dataSource-transport > < kendo:dataSource-transport-read url = "${transportReadUrl}" type = "POST" contentType = "application/json" /> < kendo:dataSource-transport-parameterMap > function(options){return JSON.stringify(options);} </ kendo:dataSource-transport-parameterMap > </ kendo:dataSource-transport > </ kendo:dataSource > |
3.导出
导出Excel:
<kendo:grid>标签下加入<kendo:grid-excel>设置
< kendo:grid-excel fileName = "Kendo UI Grid Export.xlsx" filterable = "true" proxyURL = "${saveUrl}" /> |
导出pdf:
<kendo:grid>标签下加入<kendo:grid-pdf>设置
< kendo:grid-pdf allPages = "true" avoidLinks = "true" paperSize = "A4" landscape = "true" repeatHeaders = "true" template = "page-template" scale = "0.8" proxyURL = "${saveUrl}" fileName = "Kendo UI Grid Export.pdf" > < kendo:grid-pdf-margin top = "2cm" left = "1cm" right = "1cm" bottom = "1cm" /> </ kendo:grid-pdf > |
4.表格数据编辑
普通编辑
- 添加工具栏<kendo:grid-toolbar>
- 添加<kendo:dataSource>的子标签<kendo:dataSource-transport>中<kendo:dataSource-transport-create>等对应按钮标签
- <kendo:dataSource-transport-parameterMap>对返回的数据做添加修改判断
< kendo:grid-toolbar > < kendo:grid-toolbarItem name = "create" /> < kendo:grid-toolbarItem name = "save" /> < kendo:grid-toolbarItem name = "cancel" /> </ kendo:grid-toolbar > < kendo:dataSource-transport > < kendo:dataSource-transport-create url = "${createUrl}" dataType = "json" type = "POST" contentType = "application/json" /> < kendo:dataSource-transport-read url = "${readUrl}" dataType = "json" type = "POST" contentType = "application/json" /> < kendo:dataSource-transport-update url = "${updateUrl}" dataType = "json" type = "POST" contentType = "application/json" /> < kendo:dataSource-transport-destroy url = "${destroyUrl}" dataType = "json" type = "POST" contentType = "application/json" /> < kendo:dataSource-transport-parameterMap > < script > function parameterMap(options,type) { if(type==="read"){ return JSON.stringify(options); } else { return JSON.stringify(options.models); } } </ script > </ kendo:dataSource-transport-parameterMap > </ kendo:dataSource-transport > |
行内编辑
<kendo:grid-editable mode="inline" confirmation="Are you sure you want to remove this item?"/>表明编辑模式
<kendo:grid-columns>下的标签<kendo:grid-column>填写<kendo:grid-column-command>从而在Grid里增加编辑按钮
< kendo:grid-editable mode = "inline" confirmation = "Are you sure you want to remove this item?" /> < kendo:grid-column title = " " width = "250px" > < kendo:grid-column-command > < kendo:grid-column-commandItem name = "edit" /> < kendo:grid-column-commandItem name = "destroy" /> </ kendo:grid-column-command > </ kendo:grid-column > < kendo:dataSource-transport > < kendo:dataSource-transport-create url = "${createUrl}" dataType = "json" type = "POST" contentType = "application/json" /> < kendo:dataSource-transport-read url = "${readUrl}" dataType = "json" type = "POST" contentType = "application/json" /> < kendo:dataSource-transport-update url = "${updateUrl}" dataType = "json" type = "POST" contentType = "application/json" /> < kendo:dataSource-transport-destroy url = "${destroyUrl}" dataType = "json" type = "POST" contentType = "application/json" /> < kendo:dataSource-transport-parameterMap > < script > function parameterMap(options,type) { return JSON.stringify(options); } </ script > </ kendo:dataSource-transport-parameterMap > </ kendo:dataSource-transport > |
弹出框编辑
和行内一样,mode变成popup
< kendo:grid-editable mode = "popup" /> |
编辑验证:
编写方法继承kendo.ui.validator,示例如下:
<script> //register custom validation rules ( function ($, kendo) { $.extend( true , kendo.ui.validator, { rules: { // custom rules productnamevalidation: function (input, params) { //check for the name attribute if (input.filter( "[name='productName']" ).length && input.val()) { return /^[A-Z]/.test(input.val()); } return true ; } }, messages: { //custom rules messages productnamevalidation: "Product Name should start with capital letter" } }); })(jQuery, kendo); </script> |
下拉继续加载数据:
取消分页,指出滑动
三元判断
< kendo:grid-pageable numeric = "false" previousNext = "false" ></ kendo:grid-pageable > < kendo:grid-scrollable endless = "true" /> < kendo:dataSource-transport-parameterMap > < script > function parameterMap (options, operation) { if (operation !== "read" && options.models) { return { models: kendo.stringify(options.models) }; } return kendo.data.transports["odata"].parameterMap(options, operation); } </ script > </ kendo:dataSource-transport-parameterMap > < kendo:dataSource-schema > < kendo:dataSource-schema-data > < script > function data(response) { return response.d ? response.d.results : response; } </ script > </ kendo:dataSource-schema-data > </ kendo:dataSource-schema > |
过滤:
行级过滤:
启用行级过滤:<kendo:grid-filterable mode="row"/>
column标签里设置过滤条件
< kendo:grid-editable mode = "popup" /> < kendo:grid-columns > < kendo:grid-column title = "Order ID" field = "orderId" width = "225px" > < kendo:grid-column-filterable > < kendo:grid-column-filterable-cell showOperators = "false" /> </ kendo:grid-column-filterable > </ kendo:grid-column > < kendo:grid-column title = "Ship Name" field = "shipName" width = "500px" > < kendo:grid-column-filterable > < kendo:grid-column-filterable-cell operator = "contains" suggestionOperator = "contains" /> </ kendo:grid-column-filterable > </ kendo:grid-column > < kendo:grid-column title = "Freight" field = "freight" width = "255px" > < kendo:grid-column-filterable > < kendo:grid-column-filterable-cell operator = "gte" /> </ kendo:grid-column-filterable > </ kendo:grid-column > < kendo:grid-column title = "Order Date" field = "orderDate" format = "{0:MM/dd/yyyy}" /> </ kendo:grid-columns > |
根据所有数据的值来筛选
< kendo:grid-columns > < kendo:grid-column title = "Product Name" field = "productName" > < kendo:grid-column-filterable multi = "true" search = "true" /> </ kendo:grid-column > < kendo:grid-column title = "Unit Price" field = "unitPrice" format = "{0:c}" > < kendo:grid-column-filterable multi = "true" /> </ kendo:grid-column > < kendo:grid-column title = "Units In Stock" field = "unitsInStock" > < kendo:grid-column-filterable multi = "true" /> </ kendo:grid-column > < kendo:grid-column title = "Discontinued" field = "discontinued" > < kendo:grid-column-filterable multi = "true" /> </ kendo:grid-column > < kendo:grid-column command = "destroy" title = " " /> </ kendo:grid-columns > |
自定义筛选( 以什么开始。。。)
< kendo:grid-columns > < kendo:grid-column template = "#=firstName# #=lastName#" title = "Name" /> < kendo:grid-column field = "city" title = "City" > < kendo:grid-column-filterable > < kendo:grid-column-filterable-ui > < script > function cityFilter(element) { element.kendoDropDownList({ optionLabel: "--Select Value --", dataSource: { transport: { read: "${citiesUrl}" } } }); } </ script > </ kendo:grid-column-filterable-ui > </ kendo:grid-column-filterable > </ kendo:grid-column > < kendo:grid-column field = "title" title = "Title" > < kendo:grid-column-filterable > < kendo:grid-column-filterable-ui > < script > function cityTitle(element) { element.kendoAutoComplete({ dataSource: { transport: { read: "${titlesUrl}" } } }); } </ script > </ kendo:grid-column-filterable-ui > </ kendo:grid-column-filterable > </ kendo:grid-column > |
排序:
< kendo:grid-sortable allowUnsort = "false" mode = "single" /> |
继承:类似树形结构
- 新建模板(相当于子节点的概念),适用于HashMap结构
- 构建函数
- 声明Grid组件时设置属性
< kendo:grid-detailTemplate id = "template" > < kendo:grid name = "grid_#=employeeId#" pageable = "true" sortable = "true" scrollable = "false" > < kendo:grid-columns > < kendo:grid-column title = "Order ID" field = "orderId" width = "110px" /> < kendo:grid-column title = "Ship Country" field = "shipCountry" width = "110px" /> < kendo:grid-column title = "Ship Address" field = "shipAddress" /> < kendo:grid-column title = "Ship Name" field = "shipName" width = "300px" /> </ kendo:grid-columns > < kendo:dataSource pageSize = "10" serverPaging = "true" serverSorting = "true" > < kendo:dataSource-schema data = "data" total = "total" ></ kendo:dataSource-schema > < kendo:dataSource-transport > < kendo:dataSource-transport-read url = "${transportNestedReadUrl}" data="<%=data %>" type="POST" contentType="application/json"/> < kendo:dataSource-transport-parameterMap > < script > function parameterMap(options) { return JSON.stringify(options); } </ script > </ kendo:dataSource-transport-parameterMap > </ kendo:dataSource-transport > </ kendo:dataSource > </ kendo:grid > </ kendo:grid-detailTemplate > < script >function dataBound() {this.expandRow(this.tbody.find("tr.k-master-row").first());}</ script > < kendo:grid name = "grid" pageable = "true" sortable = "true" height = "600px" detailTemplate = "template" dataBound = "dataBound" >。。。。。。</ kendo:grid > |
效果图: