做完整个小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. 利用HTML5 与CSS3 做的放大镜

    利用HTML5 与CSS3 做的放大镜 html结构 <div class="wrap"> <div class="move"> < ...

  2. mysql双机热备份的实现步骤

    MySQL 提供了数据库的同步功能,这对我们实现数据库的冗灾.备份.恢复.负载均衡等都是有极大帮助的.本文描述了常见的同步设置方法.<?xml:namespace prefix = o /> ...

  3. ubuntu重新安装 apache2

    $ sudo apt-get --purge remove apache2 $ sudo apt-get --purge remove apache2.2-common $ sudo apt-get ...

  4. 【C#】如何打开Model Browser(实体数据模型浏览器)

    Visual Studio 2017 如何打开Model Browser(实体数据模型浏览器) 2017-10-11 十有三 2 浏览:4956 开发工具 Visual Studio 做个笔记,记录下 ...

  5. git常用命令(转)

    git常用命令: git init //初始化本地git环境 git clone XXX//克隆一份代码到本地仓库 git pull //把远程库的代码更新到工作台 git pull --rebase ...

  6. EasyUi取消选中表格的所有行

  7. android: 获取屏幕高度和虚拟导航栏高度的几种方法

    package com.yongdaimi.android.androidapitest; import android.app.Activity; import android.content.Co ...

  8. java基础之开发环境配置

    一. 环境变量配置的原理 一.  配置环境变量path 如果我们按照上面的来编译和运行的话未免太过于麻烦了,那么在这里我们可以配置环境变量PATH 1.配置环境变量的步骤 这时可以直接来看效果 如果d ...

  9. dmp文件恢复oracle数据库

    –创建用户 create user anhui identified by anhui -给予用户权限 grant create session to anhuigrant connect,resou ...

  10. loj #2037. 「SHOI2015」脑洞治疗仪

    #2037. 「SHOI2015」脑洞治疗仪   题目描述 曾经发明了自动刷题机的发明家 SHTSC 又公开了他的新发明:脑洞治疗仪——一种可以治疗他因为发明而日益增大的脑洞的神秘装置. 为了简单起见 ...