vue2+kendo的ui整合
这次给大家带来vue2+kendo的ui整合,使用vue2+kendo的ui整合的注意事项有哪些,下面就是实战案例,一起来看一下。
/* * common.js *///配置区kendo.culture("zh-CN");//中文显示const defaultGridOptions = { sortable: true, groupable: false, selectable: true, editable: false, resizable: true, reorderable: true, pageable: { refresh: true, pageSize: 20, pageSizes: [20, 50, 100, 200] } }; //表格默认配置--用于配置复用//函数区function getContainerH() { //获取表内容主体(包含头部标题与底部分页栏)高度 var nBar = $(".nav-bar");//<=====我这里定义的是搜索栏 var outerHeight = 0; $(".nav-bar").each(function(i, v) { outerHeight += $(v).outerHeight(); }); return window.innerHeight - outerHeight - 1; }function resizeGrid(containerHeight) { //设置表内容高度 containerHeight = (containerHeight == undefined ? getContainerH() : containerHeight); $('.k-grid.dynamicHeight,.dynamic-height.k-grid').each(function() { var grid = $(this), h1 = grid.find('div.k-grid-toolbar').outerHeight() || 0, h2 = grid.find('div.k-grouping-header').outerHeight() || 0, h3 = grid.find('div.k-grid-header').outerHeight() || 0, h4 = grid.find('div.k-grid-pager').outerHeight() || 0, ch = containerHeight - 2 - h1 - h2 - h3 - h4; if(ch > 0) { grid.find('div.k-grid-content').css('maxHeight', ch + 'px'); grid.find('div.k-grid-content-locked').css('maxHeight', ch + 'px'); } }); }function getDataSourceConfig(idField, readUrl, filter) { //表格配置初始化 return { schema: { model: { id: idField }, data: function(response) { return response.data || response; }, total: 'total' }, transport: { parameterMap: function(options) { return kendo.stringify(options); }, read: getTransport(readUrl) }, pageSize: 20, serverPaging: true, serverFiltering: true, serverSorting: true, filter: filter, selectable: "row" }; }function getDataSource(idField, readUrl, filter) { //创建绑定数据 return new kendo.data.DataSource(getDataSourceConfig(idField, readUrl, filter)); }function getTransport(url, type, dataType, contentType) {//数据源地址配置---可用于表格以外kendo UI组件配置 return { contentType: contentType || 'application/json', dataType: dataType || 'json', type: type || 'POST', async: false, url: url }; }function toGridFilter(o) { //转为表 filter 对象 var filter = { logic: o.logic || "and", filters: [] }; for(var i in o) { var m = o[i]; if(i === "logic") { continue; } if($.trim(m) && (typeof m === "string" || typeof m === "number")) { filter.filters.push({ field: i, value: $.trim(m), operator: "eq" }); } else if(typeof m === "object" && $.trim(m.value)) { if(m.operator === "in") { var value = m.value.split("/"); filter.filters.push({ field: i, value: value, operator: m.operator || "in" }); } else { filter.filters.push({ field: i, value: $.trim(m.value), operator: m.operator || "eq" }); } } else if(typeof m === "object" && m.type === "range") { if(m.start) filter.filters.push({ field: i, value: m.start, operator: "gte" }); if(m.end) { filter.filters.push({ field: i, value: m.end, operator: "lte" }); } } } return filter; }//......以下是根据自己的项目进行配置
2.页面
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>demo</title> <head> <meta charset="UTF-8"> <title></title> <!--以下地址应用根据实际情况使用--> <link href="../plugins/bootstrap/css/bootstrap.min.css" rel="stylesheet"> <link href="../plugins/kendoui/styles/kendo.common-material.min.css" rel="stylesheet"> <link href="../plugins/kendoui/styles/kendo.material.min.css" rel="stylesheet"> <script src="../public/js/vue.min.2.1.10.js"></script> <script src="../public/js/jquery.3.1.1.min.js"></script> <script src="../plugins/kendoui/js/kendo.all.min.js"></script> <script src="../plugins/kendoui/js/cultures/kendo.culture.zh-CN.min.js"></script> <link href="../public/css/main_layout.css" rel="stylesheet" data-info="这个css是对全局页面样式的覆盖重写"> <script src="./common.js"></script> </head> </head> <body> <div id="app"> <!--搜索栏+按钮栏--> <div class="nav-bar"> <div class="btn-group"> <button type="button" data-target="#modal_theme_primary" class="btn btn-default" @click="addPage()"><i class="icon-plus2"></i>新增</button> <button type="button" class="btn btn-default" @click="del()"><i class="icon-cross2"></i>删除</button> </div> <div class="input-group" style="float: right;"> <input type="text" class="form-control" v-model="search.searchText"> <div class="input-group-btn"> <button type="button" class="btn btn-default" aria-label="Help" @click="search.searchText=''"><span class="icon-rotate-cw3"></span></button> <button type="button" class="btn btn-default" @click="onSearch"><i class="icon-search4"></i>搜索</button> </div> </div> </div> <!--主体--> <div id="main-content"> <div class="grid-wrapper"> <!--kendo grid--> <div id="gridUser" class="dynamic-height"></div> </div> </div> </div> <script> /* *Object.assign(obj1,obj3,obj3,...) 用来对象合并 这里讲两个配置合并 */ var gridOptions2 = Object.assign(defaultGridOptions, { dataSource: {},//初始化空数据源对象 columns: [{//列头配置-详情请转 field: "rownumber", title: " ", template: (dataItem) => app.dataSource.data().indexOf(dataItem) + 1,//<===计算表行序号并显示出来 width: 45 }, { title: "用户名",//绑定的ID field: "username",//绑定的文字 template: "<a title='修改' onclick=\"app.addPage('create?userId=#= userId #')\" >#= username# </a>",//自定义显示模板 width: 200 }, { title: "姓名", field: "fName", width: 200 }, { title: "邮箱", field: "email", width: 200 }, { title: "工号", field: "number", width: 200 }/**略**/], selectable: "multiple"//多选----可选值row cell;multiple, row ;multiple cell }); var app = new Vue({ el: "#app", data: { search: { searchText: "搜索文字", }, grid: null, //kendo grid对象 gridOptions: gridOptions2, //kendo grid对象配置 dataSource: {} //kendo grid对象数据源 }, methods: { reLoad: function() {//初始化grid this.gridOptions.dataSource = this.dataSource = getDataSource("roleId", "./测试数据.json"); this.grid = $("#gridUser").kendoGrid(this.gridOptions); resizeGrid(); }, addPage: function() {//<====添加页面与修改页面是共用的 alert("弹出添加页面遮罩层"); }, del: function() { var tmpGrid = this.grid.data("kendoGrid"); var selectedIds = [];//对象Id集合 var rows = tmpGrid.select(); //获取表格选中行 if(!rows.length > 0) { alert("请选择"); return; } if(!confirm("确定要删除吗?")) return; rows.each(function(i, row) { var dataItem = tmpGrid.dataItem(row); if(dataItem) { selectedIds.push(dataItem.userId); } }); $.ajax({ type: "POST", url: "/删除地址", data: selectedIds, success: function(data) { /***成功 **/ }, error: function() { /***错误**/ } }); }, onSearch: function() { console.log("搜索", this.search, " ", toGridFilter(this.search)); app.gridOptions.dataSource.filter(toGridFilter(this.search)); // } } }); $(window).resize(function() {//表高度自适应 resizeGrid(); }); app.reLoad(); </script> </body> </html>
3.测试数据格式
/** *测试数据.json */{ "total": 40,//总数 "data": [//返回的当前数据 { "userId": "uuid", "username": "ZHANGSHAN", "password": "123456", "email": "ZHANGSHAN@xx.xxx", "number": "XXX001", "fName": "张三" } //....... ] }
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
相关阅读:
以上是vue2+kendo的ui整合的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

随着互联网的发展,大数据分析和实时信息处理成为了企业的一个重要需求。为了满足这样的需求,传统的关系型数据库已经不再满足业务和技术发展的需要。相反,使用NoSQL数据库已经成为了一个重要的选择。在这篇文章中,我们将讨论SpringBoot与NoSQL数据库的整合使用,以实现现代应用程序的开发和部署。什么是NoSQL数据库?NoSQL是notonlySQL

UniApp实现Vue.js框架的完美整合引言:UniApp是一种基于Vue.js框架的跨平台开发工具,它能够将一个Vue.js项目编译成多个不同平台的应用程序,如iOS、Android、小程序等。UniApp的优势在于能够让开发者只编写一套代码,就能够同时适配多个平台,加快开发效率并降低开发成本。下面将介绍如何使用UniApp实现Vue.js框架的完美整合

Vue3相较于Vue2的变化:更强大的网络请求库整合随着Vue.js的持续发展和更新,Vue3作为Vue.js的下一个版本,带来了一些令人兴奋的变化和改进。其中一个最显著的变化就是更强大的网络请求库整合。在Vue2中,我们通常使用如axios等第三方库来进行网络请求,而在Vue3中,Vue开发团队已经提供了一个内置的网络请求库,它为我们提供了更直观和灵活的方

PHPcms与其他系统整合的实用技巧随着互联网技术的不断发展,网站开发领域也变得愈加多样化和复杂化。在实际的项目中,我们常常会面对不同系统之间需要进行整合的情况,这就需要我们具备一定的技巧和经验来解决这些问题。本文将针对PHPcms系统与其他系统整合的情况,介绍一些实用的技巧和具体的代码示例,帮助开发者更好地应对挑战。一、整合基本原理在进行系统整合时,首先需

随着互联网的迅猛发展,Web应用程序的需求也不断增加,而软件测试作为保障企业应用程序质量的重要部分,也随之变得越来越重要。然而,传统的手工测试方法既费时又费力,而且容易出错。自动化测试是解决这个问题的一种方法,其中Web应用程序的自动化测试已经成为一种常见的测试方式,其中,使用WebDriver进行Web应用程序自动化测试是一种非常受欢迎的方式。本文

深入理解Spring与Mybatis整合原理与实现一、引言Spring与Mybatis是Java开发中广泛使用的两个开源框架。Spring是一个全面的应用程序开发框架,提供了许多功能,如依赖注入、AOP等。Mybatis是一个持久化框架,通过它可以方便地操作数据库。将两者整合起来,可以更好地发挥它们的优势,提升开发效率和代码质量。二、整合原理Spring的I

在进行分组作业时,不同的同学会进行不同部分的演示文稿的制作,那么最后怎么将几个演示文稿合并为一个就是个问题了,也就是怎么把多个ppt整合到一起呢?相信很多朋友们也遇到过这种类似的问题,那么对于这类问题如何解决呢?下面就把解决这种问题的方法给大家分享一下,希望可以帮助到大家。首先打开几个ppt中的一个,然后在开始选项卡中的新建幻灯片中选择“重用幻灯片”。在重用幻灯片中点击“浏览”,选好其他组员做的ppt,可以看到所有的幻灯片都显示出来了。在左边的普通视图中选好要插入幻灯片的位置(就是点击一下那张幻

利用Webman实现网站的社交媒体整合随着社交媒体的兴起,越来越多的网站开始将社交媒体整合进自己的平台中。这一举措不仅可以增加网站的用户粘性,还能够提升用户的参与度和分享度。本文将介绍如何利用Webman框架来实现网站的社交媒体整合,并附带相应的代码示例。Webman是一个基于Kotlin语言开发的Web框架,它的设计理念是简单、轻量级和易于扩展。要使用We
