工作ui

Posted but-you

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工作ui相关的知识,希望对你有一定的参考价值。

 

这是我在实习公司做的一个小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

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2.  
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <title>mini_table</title>
  6. <meta charset="UTF-8">
  7. <script src="miniui/jquery.min.js"></script>
  8. <link rel="stylesheet" href="miniui/themes/default/miniui.css">
  9. <link rel="stylesheet" href="miniui/themes/icons.css">
  10. <script src="miniui/miniui.js"></script>
  11. <style>
  12. #table{
  13. top: 50%;
  14. left: 50%;
  15. position: absolute;
  16. margin-top: -150px;
  17. margin-left: -400px;
  18.  
  19. }
  20. .red{
  21. color:red;
  22. }
  23. </style>
  24. </head>
  25. <body>
  26. <div id="table">
  27. <div id="buttons" style="width: 800px">
  28. <a class="mini-button" iconCls="icon-remove" onclick="deleteRow()">删除</a>
  29. <a class="mini-button" iconCls="icon-add" onclick="addTable()">添加</a>
  30. <a class="mini-button" iconCls="icon-edit" onclick="editRow()">编辑</a>
  31. <input id="nameFilter" property="filter" class="mini-textbox" style="width: 150px;;"
  32. onvaluechanged="onFilterChanged" emptyText="过滤名字关键字" />
  33. <input id="ageFilter" property="filter" class="mini-filteredit" filterData="ageFilters" style="width:150px;"
  34. onvaluechanged="onFilterChanged" emptyText="过滤年龄" showClose="true"/>
  35. </div>
  36. <div id="datagrid1" class="mini-datagrid" idField="id" allowResize="false">
  37.  
  38. </div>
  39. </div>
  40. </body>
  41. </html>
  42. <script type="text/javascript">
  43. var Genders = [{ id: 1, text: ‘男‘ }, { id: 0, text: ‘女‘}];
  44. var ageFilters = [{ text: ‘大于‘, value: ‘>‘ }, { text: ‘小于‘, value: ‘<‘ }, { text: ‘等于‘, value: ‘==‘}]
  45. mini.parse();
  46. var grid = mini.get("datagrid1");
  47. var items=[
  48. {field:"id",width:"30",headerAlign:"center",align:"center",allowSort:"true",header:"id"},
  49. {field:"name",width:"120",headerAlign:"center",align:"center",allowSort:"true",showCellTip:"false",header:"姓名"},
  50. {field:"gender",type: "comboboxcolumn",width:"100",renderer:"onGenderRenderer",align:"center",headerAlign:"center",header:"性别",editor:{type:"combobox",data:Genders}},
  51. {field:"age",headerAlign:"center",width:"100",allowSort:"true",align:"center",header:"年龄",editor:{type:"spinner"}},
  52. ];
  53.  
  54. //动态添加定义的列
  55. grid.set({style:"width:800px;height:300px;", allowCellEdit:"true", allowCellSelect:"true",
  56. columns:items
  57. });
  58.  
  59. var arr=[
  60. {id:1,name:"王力坤",gender:1,age:28},
  61. {id:2,name:"周大宝",gender:1,age:19},
  62. {id:3,name:"李小明",gender:0,age:21},
  63. {id:4,name:"张博涵",gender:0,age:23},
  64. {id:5,name:"李程程",gender:1,age:19},
  65. {id:6,name:"刘洋龙",gender:0,age:25},
  66. {id:7,name:"杨逍一",gender:1,age:22},
  67. {id:8,name:"范志强",gender:1,age:26},
  68. {id:9,name:"郝兄弟",gender:0,age:18},
  69. {id:10,name:"张志鹏",gender:1,age:25},
  70. ];
  71. //性别渲染器
  72.  
  73. function onGenderRenderer(e) {
  74. for (var i = 0, l = Genders.length; i < l; i++) {
  75. var g = Genders[i];
  76. if (g.id == e.value) return g.text;
  77. }
  78. return "";
  79. };
  80.  
  81. //删除选中行
  82. function deleteRow(){
  83. var rows=grid.getSelecteds();
  84. if(rows.length>0){
  85. mini.confirm("确定删除记录?","警告",function(action){//confirm返回Boolean,mini.confirm()返回警告框,必须加回调函数
  86. if(action=="ok"){
  87. grid.removeRows(rows);
  88. }
  89. })
  90. }else{
  91. mini.alert("请选中一条记录");
  92. }
  93. };
  94.  
  95. //弹出子页面添加一条数据
  96. function addTable(){
  97. mini.open({
  98. targetWindow: window,url:"add_table.html",title:"新增记录",width:600,height:200,showMaxButton: true,
  99. onload: function () {
  100. var iframe = this.getIFrameEl();
  101. },
  102. ondestroy: function (action) {
  103. if(action=="ok"){
  104. var iframe = this.getIFrameEl();
  105. var add_data = iframe.contentWindow.GetData();
  106. $.extend(true,add_data,add_data);//add_data=mini.clone(add_data);
  107. arr.push(add_data);
  108. grid.setData(arr);
  109. }
  110. }
  111. })
  112. };
  113.  
  114. //编辑选中行,id不能修改
  115. function editRow(){
  116. var row=grid.getSelected();
  117. if(row){
  118. mini.open({
  119. targetWindow:window,url:"add_table.html",title:"修改信息",width:600,height:200,showMaxButton:true,
  120. onload:function(){
  121. var iframe = this.getIFrameEl();
  122. var data = {action: "edit",edit_item:row};
  123. iframe.contentWindow.SetData(data);
  124. },
  125. ondestroy:function(action){
  126. if(action=="ok"){
  127. var iframe=this.getIFrameEl();
  128. var edit_data=iframe.contentWindow.GetData();
  129. $.extend(true,edit_data,edit_data);
  130. grid.updateRow (row,edit_data);
  131. }
  132. }
  133. })
  134. }else{
  135. mini.alert("请选中一条记录");
  136. }
  137. };
  138.  
  139. //向表格传本地数据
  140. grid.setData(arr);
  141.  
  142. //年龄<23的行设置为红色
  143. grid.on("drawcell",function(e){
  144. var record=e.record;
  145. if(record.age<23){
  146. e.rowStyle="color:red" ;
  147. }
  148. });
  149.  
  150. //模糊查询和过滤年龄小于输入框里的记录
  151. function onFilterChanged(e) {
  152. var namebox = mini.get("nameFilter");
  153. var agebox = mini.get("ageFilter");
  154.  
  155. var name = namebox.getValue().toLowerCase();
  156. var age = parseInt(agebox.getValue().toLowerCase());
  157. var ageFilter = agebox.getFilterValue().toLowerCase();
  158.  
  159. grid.filter(function (row) {
  160. var r1 = true;
  161. if (name) {
  162. //有关键字即可查询,精准查询为String(row.name).toLowerCase().indexOf(name) != -1
  163. r1 = String(row.name).indexOf(name) != -1;
  164. return r1;
  165. }
  166. var r2 = true;
  167. if (!isNaN(age) && ageFilter) {
  168. r2 = false;
  169. if (ageFilter == ">" && row.age > age) r2 = true;
  170. if (ageFilter == "<" && row.age < age) r2 = true;
  171. if (ageFilter == "==" && row.age == age) r2 = true;
  172. }
  173. return r1 && r2;
  174. });
  175. }
  176.  
  177. </script>

弹出页面 add_table.html

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <title>add_table</title>
  7. <meta name="viewport" content="width=device-width, initial-scale=1">
  8. <script src="miniui/jquery.min.js"></script>
  9. <link rel="stylesheet" type="text/css" media="screen" href="miniui/themes/default/miniui.css" />
  10. <link rel="stylesheet" href="miniui/themes/icons.css">
  11. <script src="miniui/miniui.js"></script>
  12. </head>
  13. <body>
  14. <form id="form1">
  15. <fieldset style="border:solid 1px #aaa;padding:3px;">
  16. <legend >基本信息</legend>
  17. <div style="padding:5px;">
  18. <table>
  19. <tr>
  20. <td style="width:80px;">id:</td>
  21. <td style="width:150px;">
  22. <input name="id" class="mini-textbox" required="true"/>
  23. </td>
  24. <td style="width:80px;">姓名:</td>
  25. <td style="width:150px;">
  26. <input name="name" class="mini-textbox" required="true"/>
  27. </td>
  28. </tr>
  29. <tr>
  30. </td>
  31. <td style="width:80px;">性别:</td>
  32. <td >
  33. <input name="gender" class="mini-combobox" value="" data= [{"id":"1","text":"男"},{"id":"0","text":"女"}] required="true" />
  34. </td>
  35.  
  36. <td >年龄:</td>
  37. <td >
  38. <input name="age" class="mini-spinner" value="" minValue="0" maxValue="200" required="true"/>
  39. </td>
  40. </tr>
  41. <tr>
  42. <td style="width: 80px">手机号码:</td>
  43. <td style="width: 150px">
  44. <input id="phoneNumber" name="phoneNumber" class="mini-textbox" onvalidation="onIsPhonenumberAllow" required="true"/>
  45. </td>
  46. </tr>
  47.  
  48.  
  49. </table>
  50. </div>
  51. </fieldset>
  52. <div style="text-align:center;padding:10px;">
  53. <a class="mini-button" onclick="onOk" style="width:60px;margin-right:20px;">确定</a>
  54. <a class="mini-button" onclick="onCancel" style="width:60px;">取消</a>
  55. </div>
  56. </form>
  57.  
  58.  
  59. </body>
  60. </html>
  61. <script type="text/javascript">
  62. mini.parse();
  63.  
  64. var form = new mini.Form("form1");
  65.  
  66. function GetData() {
  67. var o = form.getData();
  68. return o;
  69. }
  70.  
  71. function SetData(data){
  72. var fields = form.getFields();
  73. var c=fields[0];
  74. if(data.action="edit"){
  75. data=$.extend(true,data,data);
  76. if(c.setReadOnly){ //设置控件只读
  77. c.setReadOnly(true);
  78. }
  79. form.setData(data.edit_item);
  80. }
  81. }
  82.  
  83. //关闭子页面
  84. function closeWindow(action) {
  85. if (window.CloseOwnerWindow)
  86. return window.CloseOwnerWindow(action);
  87. else
  88. window.close();
  89. }
  90.  
  91. function onOk() {
  92. closeWindow("ok");
  93. }
  94.  
  95. function onCancel() {
  96. closeWindow("cancel");
  97. }
  98.  
  99. //校验以1开头的标准手机号码
  100. function onIsPhonenumberAllow(e) {
  101. var reg= /^1[34578]d{9}$/;
  102. if (e.isValid) {
  103. if (reg.test(e.value) == false) {
  104. e.errorText = "请输入正确的手机号码!";
  105. e.isValid = false;
  106. }
  107. }
  108. }
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117. </script>

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


以上是关于工作ui的主要内容,如果未能解决你的问题,请参考以下文章

学ui设计能找到好工作吗?

2D UI和3D UI的工作原理

后台工作人员仍然冻结 ui

Android UI绘制之View绘制的工作原理

工作流,WEB框架,UI组件网络收集整理

UI设计工作到底分为哪几个阶段?