(2)kendo UI使用基础介绍与问题整理——Grid问题/demo、参数、data、filter等

项目中用到最多的组件是Grid,与它相关的问题也是最多的,下面我会成几个文章来说明。

这篇文章会介绍一些相关的常用参数。

一、demo及基本的参数说明

简单代码范例demo:

    <div id="grid"></div>

    <script>
       $(document).ready(function() {
       var data=[{ id:"1", cause:"包装破损", quantity:"5",description:"" },
                 { id:"2",cause:"包装破损", quantity:"2",description:"" }];  //json数据 本地
       $("#grid").kendoGrid(
          dataSource: {                        //数据源
            data:data,
            schema: {
                model: { id: "Id" }
            }
        },
        persistSelection: true,              //允许选择
        columns: [                                //列
                     {
                         selectable: true,             //选择列
                         width: "50px"                 //列宽
                     }, {
                         field: "id",                       //数据源中id的数据
                         title: "id",                        //列名
                         hidden: true                   //隐藏此列
                     }, {
                        field: "cause",                 //数据源中cause的数据
                        title: "差异原因"
                    },  {
                        field: "quantity",
                        title: "差异数量"
                    }, {
                        field: "description",
                        title: "差异描述"
                    }
        ]
    }).data("kendoGrid");

   });
    </script>

下面是项目中用到的grid列表的代码(带分页,带工具条):

//html

<div id="grid"></div>

<script type="text/x-kendo-template" id="template">
  <div class="toolbar">
    <div class="form-group">
      <label class="label-inline"单号:</label>
      <input type="text" id="Code" class="form-control input-ssm" spellcheck="false" maxlength="30" />
    </div>
    <div class="form-group">
      <label class="label-inline">创建开始时间:</label>
      <input type="text" id="startTime" class="form-control input-ssm" />
    </div>
      到
    <div class="form-group">
      <input type="text" id="endTime" class="form-control input-ssm" />
    </div>
    <button class="btn-cy btn-search" onclick="search()"><i class="fa fa-search"></i>查询</button>
    <button class="btn-cy btn-search" onclick="reset()"><i class="fa fa-refresh"></i>重置</button>
  </div>
</script>

//JS

<script>
$("#grid").kendoGrid({
        dataSource: {
            transport: {                                    //请求数据
                read: {
                    type: "post",
                    url: "/GetList",
                    dataType: "json"
                }
            },
            pageSize: 10,                         //每页数据条数
            serverPaging: true,                //服务器提供分页
            schema: {
                data: function (d) { return d.data; },
                total: function (d) { return d.total; },
                model: { id: "Id" }
            }
        },
        dataBound: function () {                                    //数据加载后执行的事件
            if ( !this.dataSource.data().length) {
                var clos = this.dataSource.options.fields.length + 1;
                this.tbody.append(‘<tr class="no-data"><td colspan="‘ + clos + ‘">没有找到相关数据</td></tr>‘);
            } else {
                this.tbody.find(".no-data").remove();
            }
        },
        excel: {                     //excel
            allPages: true         //设置导出所有页面,默认导出excel的当前页面
        },
        pageable: true,            //分页
        toolbar: kendo.template($("#template").html()),           //工具栏
        persistSelection: true,                                   //是否可以多选
        pageable: {
            refresh: true,
            pageSizes: false,
            buttonCount: 5,
            input: true,
            numeric: false,
            messages: {
                display: "{0} - {1} 共 {2} 条数据",
                empty: "没有数据",
                of: "共<span class=‘z-allPage‘>{0}</span>页 ",
                page: "&nbsp;&nbsp;&nbsp;到第",
                first: "第一页",
                previous: "前一页",
                next: "下一页",
                last: "最后一页",
                refresh: "刷新"
            }
        },
        columns: [
            {
                selectable: true,
                width: "50px"
            },
            {
                template: "<a href=‘/Detail/#: Id #‘>  #: Code # </a>",
                field: "Code",
                title: "编号",
                width: 230
            },
            {
                field: "Name",
                title: "名称",
                minResizableWidth: 220,
                headerAttributes: {
            style: "text-align: left;" //列标题居左
          },
                attributes: {
                    style: "text-align: left;" //列内容居左
                }
            },
            {
                field: "TypeStr",
                title: "类型",
                width: 100,
            },
            {
                field: "StateName",
                title: "国家",
                width: 100
            },
            {
                field: "ProvinceName",
                title: "省份",
                width: 100
            },
            {
                field: "CityName",
                title: "城市",
                width: 100
            },
            {
                field: "RegionStr",
                title: "所属区域",
                width: 90
            },
            {
                field: "LastModifierUserName",
                title: "最后修改人",
                width: 90
            },
            {
                field: "LastModificationTimeStr",
                title: "修改时间",
                width: 120
            },
            {
                field: "StatusStr",
                title: "状态",
                width: 70
            },
            {
                template: ‘<div class="btn-group">\                                                                //可以自定义列的显示
                                         <button type="button" class="btn btn-danger dropdown-toggle"  data-toggle="dropdown">操作<span class="caret"></span></button>                                         <ul class="dropdown-menu">                                         <li><a href="/Manage/Warehouse/Detail/#: Id #">查看</a></li>                                         <li><a href="/Manage/Warehouse/CreateOrEditModal/#: Id #">修改</a></li>                                         <li role="separator" class="divider"></li>                                         <li><a href="javascript:void(0)" onclick="SaveGridExcel(#: Id #,\‘档案_编号#: Code #\‘)">导出</a></li>                                         </ul></div>‘,
                title: ‘操作‘,
                width: ‘100px‘
            }
        ]

    });
</script>

下面对上面的gird用到的一些方法所涉及到的一些问题进行说明。

1 dataBound 

这个参数能够对grid加载时进行一些处理,如上面用到的“在表格没有数据的情况下给出提示”,并且可以直接通过this来获取当前表格的grid对象。

除了上面用到的一个demo,还可以在databound里添加一些自己需要的其他功能,如给表格加动态的行号,还有给表格里的一些内容添加一些初始化组件等。

2 columns的template

它是自定义显示的列,上面使用的是 template: "<a href=‘/Detail/#: Id #‘> #: Code # </a>", 这是给这一列显示的数据添加了一个链接;

还可以这样使用:

template: function (e) {
                     if (e.IsHave== true) {
                         return "是";
                     }
                     else if (e.IsHave == false) {
                         return "否";
                     }
                 }

其他的参数应该会从上面的demo中理解使用方法。

========================================================================

二、grid关于data和dataSource的相关方法

项目中会涉及到通过本地js读取grid列表中数据的方法,不过这里目前发现是存在一个问题,就是分页显示分时候,没有办法通过js获取到全部data,只能获取到当前页的data,所以下面只对不分页的情况进行整理。

演示grid demo:

$("#grid").kendoGrid({
  columns: [
    { field: "name" },
    { field: "age" }
  ],
  dataSource: [
    { name: "Jane Doe", age: 30},
    { name: "John Doe", age: 33},
  ]
});

1、data

$("#grid").data("kendoGrid").dataSource.data();

2、data - 取数据

取出某一行数据

//方法1:
$("#grid").data("kendoGrid").dataSource.data()[0];  :

//方法2:
$("#grid").data("kendoGrid").dataItem("tbody tr:eq(0)");

//方法3:
$("#grid").data("kendoGrid").dataSource.at(0);
 

取出某一行数据中的某一列:

//方法1:
$("#grid").data("kendoGrid").dataSource.data()[0].Id;

//方法2:
 $("#grid").data("kendoGrid").dataItem("tbody tr:eq(0)").Id;

//方法3:
$("#grid").data("kendoGrid").dataSource.at(0).Id;

3、data - 增加

添加一条数据:

var grid = $("#grid").data("kendoGrid");
grid.dataSource.add({ name: "John Doe", age: 33 }); //add只能添加一条数据

4、data - 修改

修改某行数据:

var grid = $("#grid").data("kendoGrid");
var data = grid.dataSource.at(0);  //取第一条数据
data.set("name", "John Doe");      //修改第一条数据 

5、data - 删除

 var grid = $("#grid").data("kendoGrid");
 var data = grid.dataSource.at(0); //取第一条数据
 grid.dataSource.remove(data);     //删除第一条数据

6、dataSource数据源 - 修改

var dataSource = new kendo.data.DataSource({
         data: [
           { name: "John Doe", age: 33 }
         ]
});
var grid = $("#grid").data("kendoGrid");
grid.setDataSource(dataSource);

说明:需要先创建一个DataSource,然后通过setDataSource方法进行设置。

dataSource也可以这样设置

var dataSource = new kendo.data.DataSource({
transport: {
read: {
type: "post",
url: "/getData",
dataType: "json"
}
},
batch: true,
schema: {
data: function (d) {
return d.data;
},
model: { id: "Id"}
},
serverFiltering: true,
filter: sqlSource
});

7、total:统计grid列表数据的总条数

方法:

$("#grid").data("kendoGrid").dataSource.total()

说明:统计grid列表数据的总条数(包含所有页面的数据)

注:$("#grid").data("kendoGrid").dataSource.data().length 这条语句也能统计grid数据的条数,但是仅限于当前页面,不包含所有页面。因此这种方法仅适用于不带分页的场景。

$("#grid").data("kendoGrid").dataSource.total()这种方法相对来说更具优势。

三、filter 自定义查询条件

注:需要配合后台来实现此功能

用法demo:

var Code = $("#Code").val().replace(/\s+/g, "");
var Name = $("#Name").val().replace(/\s+/g, "");
var dataSource = []; //dataSource是json数组,用来放查询的条件
if (Code != "") {
dataSource.push({ field: "Code", operator: "eq", value: Code });
}
if (Name != "") {
dataSource.push({ field: "Name", operator: "contains", value: Name });
}
$("#grid").data("kendoGrid").dataSource.filter(dataSource);

说明,由于项目的原因,kendo自身基础的filter是在列表中的那种,而是放在kendo的工具栏中,所以采用了自定义搜索框,然后将输入的搜索条件拼成一个对象数组,然后再传过去。

原文地址:https://www.cnblogs.com/lindaCai/p/8251255.html

时间: 2024-11-06 15:16:54

(2)kendo UI使用基础介绍与问题整理——Grid问题/demo、参数、data、filter等的相关文章

(1)kendo UI使用基础介绍与问题整理——简单说明

由于项目需要,指定我们使用kendo UI作为前端框架,然后开始入了kendo的"坑". 前期是学习阶段,对各个插件的用法进行了基本的了解,开始并未觉得有什么严重问题,确实kendo的前端的大部分插件都是有的,包括列表Grid.下拉列表(带搜索)dropdownlist 等等.从官网截图如下: 在实际项目的使用过程中,由于项目的实际需求与现有插件的差异,显示效果的差异,还有涉及到后台数据交互等问题,过程相对崎岖. 由于对esay UI等前端框架本人也并非很了解,所以此处没有对kendo

(10)kendo UI使用基础介绍与问题整理——loading

请求数据的时候需要加一个蒙层,防止前端页面发生重复操作的情况. 下面是我使用的方法,将方法封装到了函数里: function showLoading() { kendo.ui.progress($("body"), true); } function closeLoading() { kendo.ui.progress($("body"), false); } 仅供参考. 有问题欢迎大家留言探讨! 原文地址:https://www.cnblogs.com/linda

(6)kendo UI使用基础介绍与问题整理——dropdownlist/基础问题整理

项目最近属于第一阶段的中后期,dropdownlist用的也算不少,首先对它的基本用法做一个整理. (插播一段:马未都的八字方针:自信坚强.认真宽容.马爷认为自信首先要拥有知识,然后要有勇气在公众面前表达.坚强是内心的感受.认真是所有成功者必备的素质.宽容别人在很多时候很大程度是善待自己.) 因为最近在整理电脑里随手记录的一些东西,上面的话是曾经记下来的,这里插播一下,也用来勉励自己不断成长! 一.基本使用方法介绍 官网链接地址 demo:https://demos.telerik.com/ke

关于kendo ui的使用改变颜色方式

1.概述: 在网上kendo ui教程中示例在演示的时候引用的css样式为kendo.common.min.css与kendo.default.min.css这两个外部样式,大家有没有发现,这两个样式在选中的时候会出现一个黄色的选中条,很难看(当然排除配色需要用到的黄色的时候),多数情况下我们使用kendo ui是不会使用这个黄色的选中效果的,如何修改呢? 2.引入CSS样式: <link href="css/kendo.common.min.css" rel="sty

[转]Upgrading to Async with Entity Framework, MVC, OData AsyncEntitySetController, Kendo UI, Glimpse &amp; Generic Unit of Work Repository Framework v2.0

本文转自:http://www.tuicool.com/articles/BBVr6z Thanks to everyone for allowing us to give back to the .NET community, we released v1.0 of the Generic Unit of Work and Repository Framework for four weeks and received 655 downloads and 4121 views. This po

Kendo UI常用示例汇总(一)

<Kendo UI Professional试用版下载> Kendo UI Professional 提供开源和商业两个版本.开源版 Kendo UI Core,有40+个框架和组件:商业版整合了之前的Kendo UI Web.Kendo UI Mobile 和 Kendo UI DataViz ,一共有70+个框架和组件.作为Kendo UI的升级版,Kendo UI Professional既可以开发网页版应用程序,也可以开发移动版应用程序,并且在性能上也有显著的优化和提升. Kendo

kendo ui 编辑数据点击取消grid数据减少原因及处理方案

kendo ui编辑数据点击取消按钮grid数据减少的,造成的原因是grid编辑完一条数据会去datasorce中data数组中查找是否存在该数据,如果存在就不添加,不存在就添加. 先做一个例子: html代码: <div id="smsReceivesGird" style="width: 500px;"></div> js代码: <pre name="code" class="html">

&lt;kendo UI&gt;第一篇:kendo框架的基本介绍

这是我第一次在CSND上写技术博文,这篇博文也是我从事软件开发之后的第一篇博文.以前,我基本上都是用的Easy UI,Easy UI在中国推广的非常好,有广泛的开发者用户群,也有自己的官方社区论坛,官方的中文文档也十分详细,不像Kendo UI,因为很多核心部件收费,导致在中国推广地非常缓慢,初学者自学起来会很困难,我也是刚接触这个UI框架只有几个月,但是我觉得现在的确是迫不及待了.在百度上搜索关于Kendo UI的资料也很少,所以,我想利用自己算是已经入门的初学者技术,也去引导正在使用或者想要

两大HTML5框架评测:Kendo UI 和 jQuery Mobile

jQuery Mobile 和 Kendo UI 都是流行的 JavaScript 框架,在开发中我们可以在它们的基础上添砖加瓦制作所有现代移动WEB应用.这两个框架都是基于使用率顶尖的 JavaScript 库 jQuery 所构建的.比较 Kendo UI 和 jQuery Mobile 有些类似于比较同一枚硬币的两面.众所周知,jQuery Mobile 实际上并不需要太多的介绍,因为它是最常用的HTML5框架之一. Kendo UI 具有相似的动机和类似的发展速度.与 jQuery Mo