KendoUI Grid For JSP

1.基础用法

       引入标签库:<%@taglib prefix="kendo" uri="http://www.kendoui.com/jsp/tags"%>

      页面标签:结构如下:


<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="&nbsp;" 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="&nbsp;" />

       </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>

效果图:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值