当前位置: 首页 > news >正文

[React]全自动数据表格组件——BodeGrid

表格是在后台管理系统中用的最频繁的组件之一,相关的功能有数据的新增和编辑、查询、排序、分页、自定义显示以及一些操作按钮。我们逐一深入进行探讨以及介绍我的设计思路:
 
新增和编辑
想想我们最开始写新增编辑页面是怎么做的,是不是一个页面一个页面的写,然后要么表单提交要么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属性详细介绍:
参数
类型
说明
默认值
title
string
表头显示标题
 
data
string从数据源获取对应的字段名
 
type
string
列的类型。类型有:text、textarea、number、switch、dropdown、img、datepicker、datetimepicker、timepicker、hide、command
 
query
boolean
是否可以查询
false
render
function(v,d)
列渲染事件。v:当前列的数据;d:当前行的数据
 
sortDisable
boolean
是否禁止排序
false
source
array[object]
dropdown类型下拉数据源,格式:[{value:"xx",text:"vv"}],当type="dropdown"时必须
 
actions
array[object]
command类型自定义操作选项,格式:[{name:"xx",onClick:function(data){}}]。data:当前行数据
 

转载于:https://www.cnblogs.com/liuyh/p/5674455.html

相关文章:

  • csv格式导出文件
  • ASP.NET MVC进阶之路:深入理解依赖注入(DI)和控制反转(IOC)
  • 关闭listener监听日志
  • 文成小盆友python-num11-(1) 线程 进程 协程
  • 基于复制的高可用
  • IDA Pro使用
  • C#程序员应该养成的程序性能优化写法
  • 在python 中is和= = 的区别
  • 用U盘安装Ubuntu系统
  • Mac - 印象笔记开发者
  • 关于bootstrap列偏移的两种方式
  • Tortoise SVN安装后右键没有菜单的解决方法
  • 软件测试忠告
  • 桌面远程链接
  • django中@property装饰器的运用
  • CSS 提示工具(Tooltip)
  • leetcode98. Validate Binary Search Tree
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Quartz初级教程
  • springMvc学习笔记(2)
  • Vue.js-Day01
  • webpack+react项目初体验——记录我的webpack环境配置
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 浏览器缓存机制分析
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 入门到放弃node系列之Hello Word篇
  • 深度学习入门:10门免费线上课程推荐
  • 数组大概知多少
  • 译有关态射的一切
  • 怎么把视频里的音乐提取出来
  • ​你们这样子,耽误我的工作进度怎么办?
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (java)关于Thread的挂起和恢复
  • (Matlab)使用竞争神经网络实现数据聚类
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (八十八)VFL语言初步 - 实现布局
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (十六)串口UART
  • (数据结构)顺序表的定义
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .net 7 上传文件踩坑
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • .Net Remoting常用部署结构
  • .Net Web窗口页属性
  • .NET 事件模型教程(二)
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • @Not - Empty-Null-Blank
  • [android] 练习PopupWindow实现对话框
  • [BUUCTF]-PWN:[极客大挑战 2019]Not Bad解析