miniUI的增删查改操作心得及踩坑总结(1)

2023-11-22 11:30

本文主要是介绍miniUI的增删查改操作心得及踩坑总结(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这是我在实习公司做的一个小Demo,说明了miniUI企业型前端框架表格表单中的一些小问题。仅供一些像我一样的初学者借鉴,一起学习。

(注:此项目里的操作均为本地数据,没有涉及Ajax,所以请看清前提再借鉴学习。

    项目说明:制作一个表格,包括增删查改功能,年龄小于23岁的数据行用红色标记。删除和查找操作在本页面执行,添加和编辑功能弹出子页面执行。

    界面展示(在chrome浏览器下):

   具体操作

(1)不选中数据行的情况下,点击删除

(3)选中id=4的记录,点击删除

(4)点击确定,会删除记录,页面不会刷新

(5)点击添加,弹出子页面(:此处的手机号码是miniUI校验的一个正则表达式测试用例,数据不会传到父页面)

(6)添加信息

(7)点击取消数据则不会保存,点击确定出现如下页面,出现新添加的数据

(8)选中一条数据后,点击编辑按钮,若是不选择数据,则出现第(1)步的情况。这里我们选择id=3的数据行

这里的id我设置的是不可编辑状态,为了方便观察,我们改变数据行的年龄值,使其大于23看看颜色是否发生变化。

(9)

(10)点击取消则不会保存修改,点击确定,我们看到数据行从红色变为黑色,编辑成功

(11) 名字的模糊查询

(12)根据年龄过滤数据行

  上传代码给大家看一下,写的不好多多指教。我是直接把js代码写在了<script>标签里,后来懒得改了,大家不要学习我这种坏习惯。一共两个文件 :

主页面 mini_table.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head><title>mini_table</title><meta charset="UTF-8"><script src="miniui/jquery.min.js"></script><link rel="stylesheet" href="miniui/themes/default/miniui.css"><link rel="stylesheet" href="miniui/themes/icons.css"><script src="miniui/miniui.js"></script><style>#table{top: 50%;left: 50%;position: absolute;margin-top: -150px;margin-left: -400px;}.red{color:red;}</style>
</head>
<body><div id="table"><div id="buttons" style="width: 800px"><a class="mini-button" iconCls="icon-remove" onclick="deleteRow()">删除</a><a class="mini-button" iconCls="icon-add" onclick="addTable()">添加</a><a class="mini-button" iconCls="icon-edit" onclick="editRow()">编辑</a><input id="nameFilter" property="filter" class="mini-textbox" style="width: 150px;;" onvaluechanged="onFilterChanged" emptyText="过滤名字关键字" /><input id="ageFilter" property="filter" class="mini-filteredit" filterData="ageFilters" style="width:150px;" onvaluechanged="onFilterChanged" emptyText="过滤年龄" showClose="true"/>                  </div><div id="datagrid1" class="mini-datagrid" idField="id" allowResize="false"></div></div>
</body>
</html>
<script type="text/javascript">var Genders = [{ id: 1, text: '男' }, { id: 0, text: '女'}]; var ageFilters = [{ text: '大于', value: '>' }, { text: '小于', value: '<' }, { text: '等于', value: '=='}]     mini.parse();var grid = mini.get("datagrid1");var items=[{field:"id",width:"30",headerAlign:"center",align:"center",allowSort:"true",header:"id"},{field:"name",width:"120",headerAlign:"center",align:"center",allowSort:"true",showCellTip:"false",header:"姓名"},{field:"gender",type: "comboboxcolumn",width:"100",renderer:"onGenderRenderer",align:"center",headerAlign:"center",header:"性别",editor:{type:"combobox",data:Genders}},{field:"age",headerAlign:"center",width:"100",allowSort:"true",align:"center",header:"年龄",editor:{type:"spinner"}},];//动态添加定义的列            grid.set({style:"width:800px;height:300px;", allowCellEdit:"true", allowCellSelect:"true",columns:items});      var arr=[     {id:1,name:"王力坤",gender:1,age:28},{id:2,name:"周大宝",gender:1,age:19},{id:3,name:"李小明",gender:0,age:21},{id:4,name:"张博涵",gender:0,age:23},{id:5,name:"李程程",gender:1,age:19},{id:6,name:"刘洋龙",gender:0,age:25},{id:7,name:"杨逍一",gender:1,age:22},{id:8,name:"范志强",gender:1,age:26},{id:9,name:"郝兄弟",gender:0,age:18},{id:10,name:"张志鹏",gender:1,age:25},];            //性别渲染器           function onGenderRenderer(e) {for (var i = 0, l = Genders.length; i < l; i++) {var g = Genders[i];if (g.id == e.value) return g.text;}return "";};//删除选中行function deleteRow(){           var rows=grid.getSelecteds();if(rows.length>0){mini.confirm("确定删除记录?","警告",function(action){//confirm返回Boolean,mini.confirm()返回警告框,必须加回调函数if(action=="ok"){grid.removeRows(rows);}})   }else{mini.alert("请选中一条记录");}           };//弹出子页面添加一条数据function addTable(){mini.open({targetWindow: window,url:"add_table.html",title:"新增记录",width:600,height:200,showMaxButton: true,onload: function () {var iframe = this.getIFrameEl();},ondestroy: function (action) {if(action=="ok"){var iframe = this.getIFrameEl();var add_data = iframe.contentWindow.GetData();$.extend(true,add_data,add_data);//add_data=mini.clone(add_data);arr.push(add_data);grid.setData(arr); }              }})};//编辑选中行,id不能修改function editRow(){         var row=grid.getSelected();if(row){mini.open({targetWindow:window,url:"add_table.html",title:"修改信息",width:600,height:200,showMaxButton:true,onload:function(){var iframe = this.getIFrameEl();var data = {action: "edit",edit_item:row};iframe.contentWindow.SetData(data);},ondestroy:function(action){if(action=="ok"){var iframe=this.getIFrameEl();var edit_data=iframe.contentWindow.GetData();$.extend(true,edit_data,edit_data);grid.updateRow (row,edit_data);}}})   }else{mini.alert("请选中一条记录");}};//向表格传本地数据grid.setData(arr);//年龄<23的行设置为红色grid.on("drawcell",function(e){var record=e.record;if(record.age<23){e.rowStyle="color:red" ;}});//模糊查询和过滤年龄小于输入框里的记录function onFilterChanged(e) {var namebox = mini.get("nameFilter");var agebox = mini.get("ageFilter");var name = namebox.getValue().toLowerCase();var age = parseInt(agebox.getValue().toLowerCase());var ageFilter = agebox.getFilterValue().toLowerCase();grid.filter(function (row) {var r1 = true;if (name) {//有关键字即可查询,精准查询为String(row.name).toLowerCase().indexOf(name) != -1r1 = String(row.name).indexOf(name) != -1;return r1;}var r2 = true;if (!isNaN(age) && ageFilter) {r2 = false;if (ageFilter == ">" && row.age > age) r2 = true;if (ageFilter == "<" && row.age < age) r2 = true;if (ageFilter == "==" && row.age == age) r2 = true;}return r1 && r2;});}    </script>

弹出页面 add_table.html

<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge"><title>add_table</title><meta name="viewport" content="width=device-width, initial-scale=1"><script src="miniui/jquery.min.js"></script><link rel="stylesheet" type="text/css" media="screen" href="miniui/themes/default/miniui.css" /><link rel="stylesheet" href="miniui/themes/icons.css"><script src="miniui/miniui.js"></script>
</head>
<body><form id="form1"><fieldset style="border:solid 1px #aaa;padding:3px;"><legend >基本信息</legend><div style="padding:5px;"><table><tr><td style="width:80px;">id:</td><td style="width:150px;">    <input  name="id" class="mini-textbox" required="true"/></td><td style="width:80px;">姓名:</td><td style="width:150px;">    <input  name="name" class="mini-textbox" required="true"/></td></tr><tr></td><td style="width:80px;">性别:</td><td >                        <input name="gender" class="mini-combobox"  value=""  data= [{"id":"1","text":"男"},{"id":"0","text":"女"}] required="true" /> </td><td >年龄:</td><td >    <input  name="age" class="mini-spinner" value="" minValue="0" maxValue="200" required="true"/></td></tr><tr><td style="width: 80px">手机号码:</td><td style="width: 150px"><input id="phoneNumber"   name="phoneNumber" class="mini-textbox"  onvalidation="onIsPhonenumberAllow" required="true"/></td></tr></table>            </div></fieldset><div style="text-align:center;padding:10px;">               <a class="mini-button" onclick="onOk" style="width:60px;margin-right:20px;">确定</a>       <a class="mini-button" onclick="onCancel" style="width:60px;">取消</a>       </div> </form></body>
</html>
<script type="text/javascript">mini.parse();var form = new mini.Form("form1");function GetData() {    var o = form.getData();return o;}function SetData(data){var fields = form.getFields();var c=fields[0];if(data.action="edit"){data=$.extend(true,data,data);if(c.setReadOnly){   //设置控件只读c.setReadOnly(true);}form.setData(data.edit_item);}}//关闭子页面function closeWindow(action) {if (window.CloseOwnerWindow)return window.CloseOwnerWindow(action);elsewindow.close();}function onOk() {closeWindow("ok");}function onCancel() {closeWindow("cancel");}//校验以1开头的标准手机号码function onIsPhonenumberAllow(e) {var reg= /^1[34578]\d{9}$/;if (e.isValid) {if (reg.test(e.value) == false) {e.errorText = "请输入正确的手机号码!";e.isValid = false;}}}</script>

 一些遇到的坑在下一篇跟大家分享哦~~~

 一些遇到的坑在下一篇跟大家分享哦~~~

 一些遇到的坑在下一篇跟大家分享哦~~~

这篇关于miniUI的增删查改操作心得及踩坑总结(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/409840

相关文章

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表

使用C++实现单链表的操作与实践

《使用C++实现单链表的操作与实践》在程序设计中,链表是一种常见的数据结构,特别是在动态数据管理、频繁插入和删除元素的场景中,链表相比于数组,具有更高的灵活性和高效性,尤其是在需要频繁修改数据结构的应... 目录一、单链表的基本概念二、单链表类的设计1. 节点的定义2. 链表的类定义三、单链表的操作实现四、

Python利用自带模块实现屏幕像素高效操作

《Python利用自带模块实现屏幕像素高效操作》这篇文章主要为大家详细介绍了Python如何利用自带模块实现屏幕像素高效操作,文中的示例代码讲解详,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、获取屏幕放缩比例2、获取屏幕指定坐标处像素颜色3、一个简单的使用案例4、总结1、获取屏幕放缩比例from

在Mysql环境下对数据进行增删改查的操作方法

《在Mysql环境下对数据进行增删改查的操作方法》本文介绍了在MySQL环境下对数据进行增删改查的基本操作,包括插入数据、修改数据、删除数据、数据查询(基本查询、连接查询、聚合函数查询、子查询)等,并... 目录一、插入数据:二、修改数据:三、删除数据:1、delete from 表名;2、truncate

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

Python中操作Redis的常用方法小结

《Python中操作Redis的常用方法小结》这篇文章主要为大家详细介绍了Python中操作Redis的常用方法,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解一下... 目录安装Redis开启、关闭Redisredis数据结构redis-cli操作安装redis-py数据库连接和释放增