做完整个小Demo整理的一些方法和踩过的miniUI的坑,分享出来希望大家批评指正,共同进步。

1、动态创建列:尽量不要直接在html文件里创建列,动态设置在js文件里方面添加、修改等。

首先把列定义在变量中,例:

  1. var items=[
  2. {field:"id",width:"30",header:"id"},
  3. {field:"id",width:"30",header:"id"},
  4. ...
  5. ]
  6. grid.set({
  7. style:"width:800px;"... ,
  8. columns:items
  9. })

2、将本地数据传入表格:setData函数,将自己模拟的数据传入表格(哈哈,编名字的的技术还不错吧)

  1. var arr=[
  2. {id:1,name:"王力坤",gender:1,age:28},
  3. {id:2,name:"周大宝",gender:1,age:19},
  4. {id:3,name:"李小明",gender:0,age:21},
  5. ....
  6. ];
  7. grid.setData(arr);

3、性别渲染器:存放的数据中,性别一般用1 ,0 来代替 男 、女。这时需要在性别行添加 renderer:"onGenderRenderer",然后定义函数onGenderRenderer :

  1. var Genders = [{ id: 1, text: '男' }, { id: 0, text: '女'}];
  2. function onGenderRenderer(e) {
  3. for (var i = 0, l = Genders.length; i < l; i++) {
  4. var g = Genders[i];
  5. if (g.id == e.value) return g.text;
  6. }
  7. return "";
  8. };

4、用drawcell渲染:age<23的数据行为红色:

  1. .red{
  2. color:red;
  3. }
  4. grid.on("drawcell",function(e){
  5. var record=e.record;
  6. if(record.age<23){
  7. e.rowStyle="color:red" ;
  8. }
  9. });

这里的red为外部定义的样式。

其实我起初想到的另一种方法,就是用mini的findrows方法找到age<23的行,然后用addRowCls给每个符合的行增加样式。但是后来发现一个问题,就是改动别的地方时也要重新写一遍,造成代码重复,所以还是上面的方法比较好。

5、 confirm和mini.confirm选择删除行数据的时候,会弹出警告框确认是否要删除,有”确定“和”取消“两个按钮。

坑:confirm的时候,点击“确定”按钮会删除;而到了mini.confirm的时候,不管点击哪个按钮都会删除,踩了半天的坑才发现,原来mini.confirm跟alert的功能是一样的,这是一个弹出的警告框。我们要想让它实现confirm的功能,必须把要执行的函数放在它的回调函数中,附上代码:

(1)confirm警告框:

  1. if(confirm("确定删除记录?")){
  2. if(action=="ok"){
  3. grid.removeRows(rows);
  4. }
  5. }else{
  6. mini.alert("请选中一条记录");
  7. }

(2)mini.confirm警告框:

  1. mini.confirm("确定删除记录?","警告",function(action){//confirm返回Boolean,mini.confirm()返回警告框,必须加回调函数
  2. if(action=="ok"){
  3. grid.removeRows(rows);
  4. }
  5. })
  6. }else{
  7. mini.alert("请选中一条记录");
  8. }

6、chrome浏览器下 CloseOwnerWindow 问题:添加完数据的时候,chrome下点击按钮没反应,火狐和ie却可以,这是因为必须把项目部署在服务器上,CloseOwnerWindow函数才能正常执行。

这里附上一个解决办法:解决如何把项目放到服务器运行的问题

7、父页面获取子页面控件值得问题: 子页面用mini表单自带的方法form.getData()获取控件值,父页面在open函数的ondestroy中可以获取到值却显示不出来,这可能有好几个问题:

(1)lz因为比较粗心,function忘记传参,相当于没有判断条件,自然就错掉了,所以大家在找bug的时候一定要仔细看代码的细节。lz当时是这样写的,不堪回首啊~~ 子页面传了action=”ok“父页面却没有写参数.....

  1. ondestroy: function (此处是空的...) {
  2. if(action=="ok"){
  3. var iframe = this.getIFrameEl();
  4. var add_data = iframe.contentWindow.GetData();
  5. ...
  6. }
  7. }
  8.  
  9. 而子页面:
  10. function closeWindow(action) {
  11. if (window.CloseOwnerWindow)
  12. return window.CloseOwnerWindow(action);
  13. else
  14. window.close();
  15. }
  16. function onOk() {
  17. closeWindow("ok");//这里传了个action="ok"
  18. }

(2)可能还有一种情况,就是当你把新获取到的数据添加到数组的时候,没有重新setData。要记得setData两次哦,第一次是定义完列的时候传进初始数据,第二次是把新数组的值传进去。

  1. ondestroy: function (action) {
  2. if(action=="ok"){
  3. var iframe = this.getIFrameEl();
  4. var add_data = iframe.contentWindow.GetData();
  5. $.extend(true,add_data,add_data);//add_data=mini.clone(add_data);
  6. arr.push(add_data);
  7. //这里要注意,一定要再传一次更新后的数组
  8. grid.setData(arr);
  9. }
  10. }
  11. })

8、mini.clone:mini在获取到数据一定要克隆数据mini.clone才可以使用,这里用jQuery的深拷贝也可以实现。

大家可以自己试一下哦 : js的几种拷贝方法

9、控件只读:子页面id不可编辑,只需要把控制设置为只读就可以了哦。

  1. function SetData(data){
  2. var fields = form.getFields(); //获取控件
  3. var c=fields[0]; //id的控件
  4. if(data.action="edit"){
  5. data=$.extend(true,data,data);
  6. if(c.setReadOnly){ //设置控件只读
  7. c.setReadOnly(true);
  8. }
  9. form.setData(data.edit_item);
  10. }
  11. }

10、电话号码校验:在控件中validation属性校验

  1. <input id="phoneNumber" name="phoneNumber" class="mini-textbox" onvalidation="onIsPhonenumberAllow" required="true"/>
  2.  
  3.  
  4. function onIsPhonenumberAllow(e) {
  5. var reg= /^1[34578]\d{9}$/;
  6. if (e.isValid) {
  7. if (reg.test(e.value) == false) {
  8. e.errorText = "请输入正确的手机号码!";
  9. e.isValid = false;
  10. }
  11. }
  12. }

工作ui(2)的更多相关文章

  1. 【Fate/kaleid liner 魔法少女☆伊莉雅】系列中实践的、新世代的动画摄影工作流

          通常的日本动画的摄影中,是以追加Cell(celluloid 赛璐珞)与背景的合成滤镜处理为主,而在[Fate/kaleid liner 魔法少女☆伊莉雅]系列的,加入了自己使用3DCG软 ...

  2. iOS自己主动化測试的那些干货

    前言 假设有測试大佬发现内容不正确.欢迎指正,我会及时改动. 大多数的iOS App(没有持续集成)迭代流程是这种 也就是说.測试是公布之前的最后一道关卡.假设bug不能在測试中发现,那么bug 就会 ...

  3. iOS自动化测试的那些干货

    前言 如果有测试大佬发现内容不对,欢迎指正,我会及时修改. 大多数的iOS App(没有持续集成)迭代流程是这样的 也就是说,测试是发布之前的最后一道关卡.如果bug不能在测试中发现,那么bug就会抵 ...

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

    2D UI的工作原理 UI控件的位置在UI Root 的红框(视窗)上,也就是UI控件的z轴,相机的z轴,UI Root的z轴都是0,因为2D UI都是纯粹的2D图片按层次显示,不会不出现三维立体效果 ...

  5. 想在京津冀地区找个UI&UE的工作靠啥?看看这篇博客

    文章目的 本篇文章针对京津冀计算机专业应届毕业生,求职UI相关行业,提供数据参考. 本篇文章试用对象 UI相关培训机构 计算机设计相关培训机构 高职专科类学院计算机相关专业 就业参考网站 智联招聘 拉 ...

  6. UI 设计的整个工作流程是怎样的?

    作为一个专业UI设计师,不仅仅要了解整个产品在UI界面设计,交互设计中的工作流程,更需要了解整个产品从需求提出到产品上线的整个工作流程. 以下是互联网产品个部门的工作分配及流程: 从图中可以看到,一个 ...

  7. UI简单工作

     UI用户界面 需求——效果图——风格设计——高保证效果——html 网页的宽度=屏幕的宽度-纵向滚动条的宽度 企业网站一般是1280 根据百度流量研究所 目前我们的网页注主要是1024和1200   ...

  8. 解决DoubanFM第三方客户端UI线程与工作线程交互问题

    最新文章:Virson's Blog 首先要感谢yk000123的慷慨开源,开源地址见:http://doubanfm.codeplex.com/ 最近正好在学习WPF,然后在Codeplex上找到了 ...

  9. 关于UI设计的一些工作了解

    关于UI设计相信大家在刚接触UI的时候都不太了解,我来说说我在一段学习时间后的了解. UI从工作内容上来说分为3大类,即研究工具,研究人与界面的关系,研究人与之相应. ​ UI设计师的职能一个是图形设 ...

随机推荐

  1. 提取a标签的链接文字

    在seg上看到一个问题 <a href="http://www.abc.com/thread-4131866-1-1.html" class="s xst" ...

  2. ARC073D Simple Knapsack

    传送门 题目大意 给你n个物品,你有一个容量为W的背包,每一个物品都有它的重量和价值,让你从n个中选取若干个,使得总重量不超过背包的上限,而且使得价值最大. 分析 首先我们不难发现由于W很大,所以这并 ...

  3. 1.5快速上手OpenCV图像处理

    在上一节中,已经完成了OPENCV的配置,在本节接触几个Opencv图像处理相关的程序,看看opencv用简洁的代码能够实现哪些有趣的图像效果. 1.第一个程序:图像显示 #include<op ...

  4. 转/keystore和truststore的区别

    keytool是java自带的工具用于产生密钥 keystore可以看成一个放key的库,key就是公钥,私钥,数字签名等组成的一个信息. truststore是放信任的证书的一个store. 那他们 ...

  5. c# 汉字换英文,英文转汉字

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  6. 水平居中的那些事之解决jqpagination分页插件无法居中的问题

    固定宽度的元素水平居中只需要 margin-left:auto: margin-right:auto; 换成 margin:0 auto; 也是一样的 今天给我用的jqPagination分页插件实现 ...

  7. javascript window.showModalDialog不兼容goole解决方案

    window.showModalDialog不兼容goole解决方案 一.弹框方案: 1.window.open; 2.window.showModalDialog; 3.div制作窗口:(本节忽略) ...

  8. [内容分享]粗略判断Shader每条代码的成本

    https://mp.weixin.qq.com/s/Vyn1bKaBMHommxbnFPPQeg Unity对Shader文件进行编译的时候,DX9和DX11的版本会直接生成汇编码. ?   len ...

  9. 【bzoj2818】: Gcd 数论-欧拉函数

    [bzoj2818]: Gcd 考虑素数p<=n gcd(xp,yp)=p 当 gcd(x,y)=1 xp,yp<=n满足条件 p对答案的贡献: 预处理前缀和就好了 /* http://w ...

  10. nginx的worker_processes优化

    nginx的worker_processes参数来源: http://bbs.linuxtone.org/thread-1062-1-1.html分享一:搜索到原作者的话:As a general r ...