做完整个小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. Overloaded的方法是否可以改变返回值的类型

    摘要: 重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同) Overload是重载的意思,Override是覆盖的意思,也就是重写. 重载 ...

  2. HTML5游戏开发 PDF扫描版​

    很多从事Web前端开发的人对HTML总有些不满,比如需要手动检查和设计很多格式代码,不仅容易出错,而且存在大量重复.好在HTML5让我们看到了曙光.作为下一代Web开发标准,HTML5成为主流的日子已 ...

  3. wpf跳转网页

    如果是本地磁盘上的网页,可以考虑利用操作系统的文件关联自动调用操作系统默认浏览器: System.Diagnostics.Process.Start("explorer.exe", ...

  4. 浅谈chainer框架

    一 chainer基础 Chainer是一个专门为高效研究和开发深度学习算法而设计的开源框架. 这篇博文会通过一些例子简要地介绍一下Chainer,同时把它与其他一些框架做比较,比如Caffe.The ...

  5. 正经学C#_表达式与其运算符[赋值运算符]:《c#入门经典》

    上一节中介绍了算术运算符,算术运算符的优先级. 今天说说赋值运算符,不陌生,=[等号]就是赋值运算符的一种. 除此之外还有好多种的.见下图. 运算符 类别 描述 实例 = 二元 简单的赋值运算符,把右 ...

  6. 改变HTML文件上传控件样式

    思路: 1.重写一个新的样式 2.将默认样式设置display:none;,即设为不可见 3.在js里调用:当点击新样式的时候,调用这个input的点击事件 html: <div class=& ...

  7. 2019-RHCE-红帽题库(稳定)

    rhce7 考题2台服务器设置yum源[aa]name=aabaesurl=ftp://server.rhce.cc/dvdenabled=1gpgcheck=0 cd /etc/yum.repos. ...

  8. 洛谷P2518 [HAOI2010]计数

    题目描述 你有一组非零数字(不一定唯一),你可以在其中插入任意个0,这样就可以产生无限个数.比如说给定{1,2},那么可以生成数字12,21,102,120,201,210,1002,1020,等等. ...

  9. 文件上传之Ajax篇

    AJAX上传文件 1.为什么要写这篇文章  楼主前几天去北京面试,聊起ajax上传文件, 面试官告之不能,遂讨论之,不得果,于是写下这篇文章,希望能和大家一起学习 2.正文 首先,要使用ajax上传文 ...

  10. Windows服务注意!

    安装不成功 报错,或者安装成功 不运行 ,要把引用的dll文件 放到obj \debug文件夹下