React 全自动数据表格组件——BodeGrid的实现思路


Posted in Javascript onJune 12, 2019

表格是在后台管理系统中用的最频繁的组件之一,相关的功能有数据的新增和编辑、查询、排序、分页、自定义显示以及一些操作按钮。我们逐一深入进行探讨以及介绍我的设计思路:

表格是在后台管理系统中用的最频繁的组件之一,相关的功能有数据的新增和编辑、查询、排序、分页、自定义显示以及一些操作按钮。我们逐一深入进行探讨以及介绍我的设计思路:

新增和编辑

想想我们最开始写新增编辑页面是怎么做的,是不是一个页面一个页面的写,然后要么表单提交要么Ajax提交。后台有无数个新增和编辑的视图页,现在想想真是恐怖啊,看着都累。后面接触到kendoui的grid组件,看到只需要配置列的属性以及保存的地址就能自动完成新增和编辑功能,着实让我兴奋了一把。然而不幸的是我几乎找遍了react所有的组件库,都没找到一个类似的组件,无奈只有自己动手了。设计思路:

1、设置每一列的类型,比如文本、数字、图片、时间、bool值、下拉选择框等等。

2、为不同类型提供不同的操作组件,比如文本的input组件,图片的file组件。这样在新增和编辑的时候会根据列以及其类型生成对应的表单。

3、保存用户输入,提交至配置的url地址。

查询、排序、分页

查询、排序和分页几乎是每个表格页面必须的功能,实现方式也多种多样,这里介绍表格万能查询和排序的设计思路:

1、每一列是否可以查询应该是可以配置的。

2、针对不同的数据类型查询条件应该有所区别,比如文本有“包含”条件,数字有“大于”条件等。

3、后端的处理应该统一,为每一个查询条件编写查询逻辑是很费力不讨好的工作。

4、每一列是否可以排序是可以配置的,排序分正序和倒序. 

最后表格的请求体设计如下:

{
 "pageIndex":1,
 "pageSize":15,
 "sortConditions":[
  {
   "sortField":"name",
   "listSortDirection":1
  }
 ],
 "filterGroup":{
  "rules":[
   {
    "field":"displayName",
    "operate":"contains",
    "value":"a"
   }
  ]
 }
}

整个组件的源码还是比较复杂,这里就不深入了,有兴趣的同学可以查看react-demo中的bode-grid.js源码,地址:https://github.com/liuxx001/react-demo.git

不过使用起来还是很简单的,如下所示:

getInitialState:function () {
 let gridOptions={
  ref:this,
  title:"角色列表",
  url:{
   read:ApiPrefix+"zero/role/GetRolePagedList",
   add:ApiPrefix+"zero/role/CreateRole",
   edit:ApiPrefix+"zero/role/UpdateRole",
   delete:ApiPrefix+"zero/role/DeleteRole"
  },
  columns:[
   {title:"角色名",data:"name",type:"text",editor:{},query:true},
   {title:"显示名",data:"displayName",type:"text",editor:{},query:true},
   {title:"是否静态角色",data:"isStatic",type:"switch",editor:{},query:true},
   {title:"是否默认角色",data:"isDefault",type:"switch",editor:{},query:true},
   {title:"操作选项",type:"command",actions:[{name:"设置权限",onClick:showPermissionModel}]}
  ]
 };
 return {
  gridOptions: gridOptions
 };
}

很少的代码就能完全实现表格的展示、新增、编辑、排序、查询、分页等功能,显示效果:

BodeGrid表格api:

参数 类型 说明 默认值
ref object ref指向本身,用于行内按钮绑定数据 ref:this,固定写法
title string 表格标题  
url object 远程api接口配置  
columns array[object] 表格列属性配置  
actions array[object] 表格右上角自定义按钮  
pageSize number 每页显示数量 15
pageSizeOptions array[string] 可选显示数量 ["10","15","20","30","50","100"]
sortField string 初始排序字段 第一列
sortDirection string 初始排序方式 desc

columns属性详细介绍:

React 全自动数据表格组件——BodeGrid的实现思路

总结

以上所述是小编给大家介绍的React 全自动数据表格组件——BodeGrid的实现思路 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
JQuery获取浏览器窗口内容部分高度的代码
Feb 24 Javascript
js猜数字小游戏的简单实现代码
Jul 02 Javascript
javascript(js)的小数点乘法除法问题详解
Mar 07 Javascript
extjs 如何给column 加上提示
Jul 29 Javascript
再谈javascript原型继承
Nov 10 Javascript
JS根据生日算年龄的方法
May 05 Javascript
javascript实现带下拉子菜单的导航菜单效果
May 14 Javascript
Bootstrap轮播插件使用代码
Oct 11 Javascript
使用JavaScript生成罗马字符的实例代码
Jun 08 Javascript
Vue 组件封装 并使用 NPM 发布的教程
Sep 30 Javascript
JS事件绑定的常用方式实例总结
Mar 02 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
Sep 07 Javascript
详解如何提升JSON.stringify()的性能
Jun 12 #Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
Jun 12 #Javascript
浅谈webpack 四个核心概念之Entry
Jun 12 #Javascript
vue安装遇到的5个报错及解决方法
Jun 12 #Javascript
深入学习JavaScript 高阶函数
Jun 11 #Javascript
javascript防抖函数debounce详解
Jun 11 #Javascript
详解ng-alain动态表单SF表单项设置必填和正则校验
Jun 11 #Javascript
You might like
如何利用php+mysql保存和输出文件
2006/10/09 PHP
PHP读取网页文件内容的实现代码(fopen,curl等)
2011/06/23 PHP
利用PHP生成静态HTML文档的原理
2012/10/29 PHP
PHP 如何获取二维数组中某个key的集合
2014/06/03 PHP
Thinkphp框架中D方法与M方法的区别
2016/12/23 PHP
javascript之dhDataGrid Ver2.0.0代码
2007/07/01 Javascript
jQuery 源码分析笔记(5) jQuery.support
2011/06/19 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
2013/05/27 Javascript
Javascript中innerHTML用法实例分析
2015/01/12 Javascript
一起学写js Calender日历控件
2016/04/14 Javascript
Bootstrap表单简单实现代码
2017/03/06 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
vue系列之动态路由详解【原创】
2017/09/10 Javascript
微信小程序form表单组件示例代码
2018/07/15 Javascript
更改BootStrap popover的默认样式及popover简单用法
2018/09/13 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
微信开发之微信jssdk录音功能开发示例
2018/10/22 Javascript
小程序实现人脸识别功能(百度ai)
2018/12/23 Javascript
小程序中的箭头函数的具体使用
2020/06/19 Javascript
通过实例了解Render Props回调地狱解决方案
2020/11/04 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
2020/12/24 Javascript
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
Python中psutil的介绍与用法
2019/05/02 Python
python 消费 kafka 数据教程
2019/12/21 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
python实现画图工具
2020/08/27 Python
python 利用zmail库发送邮件
2020/09/11 Python
提高python代码运行效率的一些建议
2020/09/29 Python
Python使用内置函数setattr设置对象的属性值
2020/10/16 Python
python装饰器代码深入讲解
2021/03/01 Python
美国复古街头服饰精品店:Need Supply Co.
2017/02/22 全球购物
澳大利亚现代波西米亚风格女装网站:Bohemian Traders
2018/04/16 全球购物
Linux如何修改文件和文件夹的权限
2012/06/27 面试题
秋季校运动会广播稿
2014/02/23 职场文书
小学生2014国庆节演讲稿:祖国在我心中
2014/09/21 职场文书