近期正在接触OA系统,并且有使用了几个插件,今天就简单介绍下我在项目中如何使用这两个插件。

artDialog:弹窗插件(官网)    Ztree:树形插件(官网

先上个图的两个插件的结合应用:

一个很后台系统很常见的操作,选择用户,这里的操作方法为在弹出框中选择完用户之后,返回用户ID和用户姓名给父页面。项目中使用的是MVC2.0,一般的后台系统都用到了iframe,这个OA也不例外。在iframe的最外层引用artDialog所需的文件。那么在iframe的子页面中,则采用top就可以调用这个插件了,不需要每个页面都不引用,很方便的。

上图所弹出的页面其实是以iframe的形式弹出一个页面而已,所以我们把Ztree的功能在一个页面上构造好。下面先讲解下Ztree的使用:

第一步:引用相关文件。

<script type="text/javascript" src="/Scripts/jquery.ztree.core-3.1.min.js"></script>
<script type="text/javascript" src="/Scripts/jquery.ztree.excheck-3.1.min.js"></script>
<link rel="stylesheet" href="/Content/zTreeStyle/zTreeStyle.css" type="text/css" />

第一个文件是Ztree的核心文件,这个是必须要的;第二个文件是一个拓展文件,主要用户单选框和复选框的功能,因为要用到,所以也必须引用进来;第三个文件是CSS文件。

第二步:相关配置(具体详细配置,请参考官网API)。

var setting ={data: {simpleData: {enable:true}},check: {enable:true},async: {//异步加载节点数据enable:true,url:"/DepartMent/GetJson/"},callback: {//绑定回调函数onAsyncSuccess: zTreeOnAsyncSuccess//在异步加载完成时调用}};$(function() {$.fn.zTree.init($("#treeDemo"), setting);});

     function zTreeOnAsyncSuccess(event, treeId, treeNode, msg) { if (art.dialog.data('User')) {//这里有用到artDialog插件var ID = top.art.dialog.data('User');// 获取由主页面传递过来的数据                var zTreeObj = $.fn.zTree.getZTreeObj("treeDemo")var zTree = zTreeObj.getCheckedNodes(false);for (var i = 0; i < zTree.length; i++) {if (ID.indexOf("," + zTree[i].id + ",") != -1) {zTreeObj.checkNode(zTree[i], true);}}};};

这里应用的场景为已经选择了这些用户,然后关掉了弹出框,然后又需要重新选择用户时,则第一次选择的用户需要在初始化的时候进行赋值。

我们看下父窗体中怎么配置的(弹窗插件的使用方法):

引用相关文件:

<script type="text/javascript" src="/Scripts/artDialog/artDialog.source.js?skin=blue"></script>
<script type="text/javascript" src="/Scripts/artDialog/iframeTools.source.js"></script>

第一个文件是弹窗插件的核心JS,后面skin=blue表示选择那个皮肤(具体参考官网)。

第二个文件是需要在iframe中使用时所引用的,需要使用第二个文件中的open函数。

functionOpenFrame_Radio() {art.dialog.data('User', $('#UUpUserID').val());//获取需要传到子窗体的值art.dialog.open('/DepartMent/SetUser_Radio/', { height: '80%', width: '20%', title: "选择直属上级", lock: true }, false);//打开子窗体}

这样调用这个函数的时候就会以弹出框的形式打开“/DepartMent/SetUser_Radio/”这个页面了,我们再看看子窗体中如何接受父窗体传过来的值,其实上面有说到的:

var ID = top.art.dialog.data('User');//如果页面不引用artDialog的文件则使用TOP来调用最外层的iframe所引用的文件,效果相同。这里注意date里面的值需要跟父窗体中的命名一致。

接着上面子窗体中的Ztree操作讲:当打开子窗体时,Ztree已经配置为异步加载了,当加载完节点数据的时候(Tree已经生成),就会调用配置的回调函数,然后进行初始化赋值处理。

第三步:返回值。

当我们已经选择好用户之后,需要关闭弹出框,并且返回数据给父窗体。

点击“确认保存”时,则调用一个函数

functionGetValue() {var delidID = ",";//用户ID,用户保存数据库var delidName = "";//用户姓名,用户给客户看var zTree = $.fn.zTree.getZTreeObj("treeDemo").getCheckedNodes(true);//获取所有选中状态的节点for (var i = 0; i < zTree.length; i++) {delidID+= zTree[i].id + ",";delidName+= zTree[i].name + ",";}var Origins =artDialog.open.origin;//这里表示父窗体Origins.document.getElementById('RUserID').value =delidID;//赋值父窗体“RUserID”为父窗体对象            Origins.document.getElementById('RUserIDs').value =delidName;art.dialog.close();//关闭弹出框}

这里还可以进行单选的操作:

我把配置贴下吧,其实API中都有的。

 var setting ={data: {simpleData: {enable:true}},check: {enable:true,chkStyle:"radio",//修改了这里radioType:"all"//还有这里,ALL标识整个Tree只准选中一个节点},async: {enable:true,url:"/DepartMent/GetJson/"},callback: {onAsyncSuccess: zTreeOnAsyncSuccess}};

最后还有就是节点数据,因为是放到控制器中生成的,我把生成的格式给大家看下,如果文章看不懂的童鞋,可以去官网上看,都有DEMO的。

     [{ id:1, pId:0, name:"手机", ename:"Mobile", open:true},{ id:11, pId:1, name:"诺基亚", ename:"Nokia"},{ id:111, pId:11, name:"C6(音乐版)", ename:"C6(Music)"},{ id:112, pId:11, name:"X6(导航版)", ename:"X6(GPS)"},{ id:113, pId:11, name:"5230(世博版)", ename:"5230(SB)"},{ id:114, pId:11, name:"N97mini", ename:"N97mini"},{ id:12, pId:1, name:"三星", ename:"Samsung"},{ id:121, pId:12, name:"I9000(联通版)", ename:"I9000(Unicom)"},{ id:122, pId:12, name:"I9000(移动版)", ename:"I9000(China Mobile)"},{ id:123, pId:12, name:"Galaxy Naos", ename:"Galaxy Naos"},{ id:124, pId:12, name:"Fascinate", ename:"Fascinate"},{ id:13, pId:1, name:"索爱", ename:"Sony Ericsson"},{ id:131, pId:13, name:"U1i(Satio)", ename:"U1i(Satio)"},{ id:132, pId:13, name:"U5i(Vivaz)", ename:"U5i(Vivaz)"},{ id:133, pId:13, name:"X10i", ename:"X10i"}]

这里就完成了整个操作了,誒,文笔不好,组织语言自然就不怎么样了,大家见谅。

转载于:https://www.cnblogs.com/jiangbiao/archive/2012/04/19/2457432.html

artDialog、Ztree 初体验相关推荐

  1. 苹果电脑安装python3密码_mac系统安装Python3初体验

    前沿 对于iOS开发不要随便拆卸系统自带的Python,因为有很多 library 还是使用 Python2.7. 1 安装Xcode 1.1 App Store 搜索Xcode 并安装 1.2 安装 ...

  2. MapReduce编程初体验

    需求:在给定的文本文件中统计输出每一个单词出现的总次数 第一步: 准备一个aaa.txt文本文档 第二步: 在文本文档中随便写入一些测试数据,这里我写入的是 hello,world,hadoop he ...

  3. 小程序 缩放_缩放流星应用程序的初体验

    小程序 缩放 by Elie Steinbock 埃莉·斯坦博克(Elie Steinbock) 缩放流星应用程序的初体验 (First Experiences Scaling a Meteor Ap ...

  4. wxWidgets刚開始学习的人导引(3)——wxWidgets应用程序初体验

    wxWidgets刚開始学习的人导引全文件夹   PDF版及附件下载 1 前言 2 下载.安装wxWidgets 3 wxWidgets应用程序初体验 4 wxWidgets学习资料及利用方法指导 5 ...

  5. 用鸿蒙跑了个 “hello world”!鸿蒙开发初体验

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源 | https://my.oschina.net/u ...

  6. Windows Embedded Standard开发初体验(二)

    支持Silverlight的Windows Embedded Standard 好了,完成安装之后,我们就可以来做Windows Embedded Standard的第一个操作系统镜像了.在开始菜单中 ...

  7. 深度探索Hyperledger技术与应用之超级账本初体验(附部署代码)

    2019独角兽企业重金招聘Python工程师标准>>> 本章零基础地介绍了如何快速体验超级账本搭建的区块链网络,我们先绕过了比较复杂的初始化配置,用官方提供的fabric-sampl ...

  8. Spring环境搭建,IoC容器初体验~

    由于最近的任务是关于IoC配置文件格式的转换,所以需要从Spring的IoC容器开始学起,今天根据网上的介绍搭建了Spring环境,并对其IoC容器进行了初体验.文章中涉及到的软件以及推荐的一本关于S ...

  9. 来自新手Banana Pi香蕉派初体验

    2019独角兽企业重金招聘Python工程师标准>>> 一.前言 一段时间来对有强大的技术支持和完善的社区的Raspberry Pi很感兴趣,本想入一片学习学习,但转念一想Raspb ...

最新文章

  1. .net core EPPlus npoi_微软官方上线免费C#、.NET在线教程视频
  2. YodaOS: 一个属于 Node.js 社区的操作系统
  3. Play和Grails Java框架的优缺点
  4. python 批量处理文件
  5. Git 使用明细,持续完善中......
  6. 上一页、下一页链接(采用分页方式)
  7. 网络疯传IT男女标配图
  8. 乐华网上阅卷系统服务器地址,乐华网上阅卷系统
  9. Linux下安装HP打印机的驱动程序
  10. 动词变名词的变化规则_英语单词词性转换规则大全
  11. 刀具磨损类论文观后总结
  12. 利用adb卸载手机预装软件(系统软件)
  13. 商家入驻天猫商城需要多少钱 天猫入住有哪些常见问题
  14. html qq消息弹窗提醒,能不能让QQ消息不再讨厌 QQ HD mini消息弹窗提醒的优化方案...
  15. html2canvas生成长图片时导致背景图渲染不全问题
  16. liteos中sem的使用
  17. dz文件cp.php,DZ文件扩展名 - 什么是.dz以及如何打开? - ReviverSoft
  18. uniapp图片自适应_uniapp 仿微信朋友圈,微博晒图 图片自适应排版
  19. matlab仿真多普勒相移,有关脉冲多普勒雷达的matlab仿真问题
  20. MySQL查询数据中每种类型的占比

热门文章

  1. php 插入表,php 向数据库表中插入数据
  2. python遍历文件夹下所有文件大小_python遍历文件夹读取文件大小 | 学步园
  3. java飞行器服务端_使用jvisualvm和飞行记录器分析Java程序cpu占用率过高
  4. elinput内容过长显示悬浮框_element ui el-table 表头自定义,内容超出省略,悬浮时显示...
  5. C/C++中的复数介绍
  6. 在哪个公众号学python好_怎么通过公众号来快速学习python编程?
  7. php和 sqlserver效率,SQLServer语句执行效率及性能测试
  8. qstring删除最后一个字符_Excel去掉最后一个字符两个方法,正反思维,你支持哪一个?...
  9. python星号正方形_Python星号*与**用法分析
  10. SpringBoot开发案例之整合Dubbo分布式服务