您的位置:

首页 >

网络编程 >

Extjs中通过Tree加载右侧TabPanel具体实现 >

Extjs中通过Tree加载右侧TabPanel具体实现

2016-03-03 02:29:14

分类:网络编程

最近在做一个物流管理的项目,公司必须要求用Extjs4.1来做界面,因为以前一直也没有接触过所以开发的过程中遇到了很多的困难。同时Extjs4.1的资料在网上也相对来说较少。好了,不说废话上代码: 1.左侧的功能树 复制代码 代码如下: Ext.define("AM.view.SystemTree", { extend : 'Ext.tree.Panel', alias : 'widget.systemTree', rootVisible : false,// 不展示ROOT displayField : 'text', // title:'物流运输系统', viewConfig : { // 具有拖拽功能 plugins : { ptype : 'treeviewdragdrop' }, listeners : { // 拖拽 drop : function(node, data, overModel, dropPosition, options) { alert("把: " + data.records[0].get('text') + " 移动到: " + overModel.get('text')); } } }, dockedItems : [ { xtype : 'toolbar', items : [ { xtype : 'button', id : 'allopen', icon : 'resources/img/lock_open.png', text : '展开全部' }, { xtype : 'button', id : 'allclose', icon : 'resources/img/lock.png', text : '收起全部' } ] } ], root : { text : 'root', leaf : false, id : '0', children : [ { text : '运输管理', checked : false, // 显示被选中 leaf : false, // 是否是叶子节点 icon : 'resources/img/folder_user.png', id : '01', children : [ { text : '车辆信息管理', checked : false, icon : 'resources/img/report_edit.png', leaf : true, id : 'vehiclelist',  //主要的要点在这里,这里的id要指定为你要打开的那个视图的别名 }] }] } }); 要点介绍: •tree一定不要忘记添加别名alias •设置树形结构的子节点的id值为你需要在右侧显示的view的别名alias(重要) ------可参考下方的view代码 2.需要打开的对应的view 复制代码 代码如下: Ext.define("AM.view.transportation.VehicleList",{ extend:'Ext.grid.Panel', alias:'widget.vehiclelist',   //这里一定要设置别名 id:'vehiclelist', store:'VehicleStore',     ......中间代码省略 columns : [ {text:'车辆编号',dataIndex:'vehicleNo', field:{ xtype:'textfield', allowBlank:false } }, {text:'车辆描述',xtype:'templatecolumn', tpl:'车辆的编号为{vehicleNo} 所在地区为{vehicleArea}' } ], initComponent:function(){ this.callParent(arguments); } }); 3.建立一个右侧的TabPanel 复制代码 代码如下: Ext.define('AM.view.TabPanel',{ //主页面的tab面板 extend: 'Ext.tab.Panel', alias:'widget.tabpanel', closeAction: 'destroy', defaults :{ bodyPadding: 10 }, items: [{ title: '主页', autoLoad:'content.jsp'    //只有一个基本的panel }], }); 4.设置点击tree的触发事件 复制代码 代码如下: 'systemTree':{ itemclick:function(tree,record,item,index,e,options){ var tabs = tree.ownerCt.ownerCt.ownerCt .child('#center-grid').child("#tabpanel"); //获取当前点击的节点 var treeNode=record.raw; var id = treeNode.id; var text=treeNode.text; //获取点击的树节点相同的tab标签 var tab = tabs.getComponent(id); if(!tab){//如果不存在 tabs.add({//用点击树的节点的ID、text新建一个tab id:id, closable: true, title:text, iconCls:id, xtype:id  //将tree设置好的id对应的TabPanel中去,相当与把对应的view填充到TabPanel中 }).show(); }else{//如果存在 tabs.setActiveTab(tab);//Active } } }, 结果上效果图: 总结:Extjs做出来的效果确实很炫,但是学起来也有一定的难度,特别是比较新的版本,网上很难找到什么好的教程。还好我们有API,可以多对着API中的例子进行练习,这样掌握起来也很快。最近才接触Extjs,

创建随机数 ①自JavaScript产生后,好多浏览器中都有内置的随机数发生方法。例如: var number = Math.random(); 该方法产生一个0到1之间的浮点数。 ②基于时间,亦可以产生随机数。例如: var now=new Date(); var number = now.getSeconds(); 这将产生一个基于目前时间的0到59的整数。 var now=new Date(); var number = now.getSeconds()%43; 这将产生一个基于目前时间的0到42的整数。 ③这里介绍一个相当优秀的的随机数发生器程序,能应用于许多领域。 <!-- rnd.today=new Date(); rnd.seed=rnd.today.getTime(); function rnd() {     rnd.seed = (rnd.seed*9301+49297) % 233280;     return rnd.seed/(233280.0); }; function rand(number) {     return Math.ceil(rnd()*number); }; // end central randomizer. --> [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]   如果要在你的网页中使用该随机数发生器,必须把这段代码放在<HEAD> 和 </HEAD>标记之间。   要创建一个随机浮点数时,使用rnd();要创建一个随机整数时,例如,1到10时,使用rand(10)。   下面创建随机图片的例子中,就是用这个随机数发生器来产生随机数的,因此,要使下面的例子能正常工作,要确保你的网页中已包含上面这段代码。 创建随机图片   创建随机图片,这是利用随机数所能做的最简单的事了。此例中,我们假设有10张图片,  banner1.gif.....banner10.gif,每当文档被载入时,我们希望能随机地显示这些图片。 <script language="JavaScript"><!-- document.write('<img src="../images/banner' + rand(10) + '.gif" width=400 height=40>'); //--></script>   如果图片不是以数字的形式来命名的,或者图片的类型或大小不一样时,那么,你也可以通过检查随机数的值,然后显示相应的图片: 复制代码 代码如下: <script language="JavaScript"><!-- var number = rand(10); if (number == 1) {   var picture = "one.gif";var width = 400;var height = 40; } else if (number == 2) {   var picture = "two.jpg";var width = 200;var height = 20; } ... ... else if (number == 9) {   var picture = "nine.gif";var width = 450;var height = 450; } else if (number == 10) {   var picture = "ten.jpg";var width = 40;var height = 400; } document.write('<img src="../images/' + picture + '" width=' + width + ' height=' + height + '>'); //--></script>   上面介绍了怎样随机显示图片,同样的道理,也可以利用随机数创建随机的文本、表单、标题广告、URL 、背景颜色和图像、调查表和帧等等,

复制代码 代码如下:// Ajax 文件下载 jQuery.download = function(url, data, method){ // 获取url和data if( url && data ){ // data 是 string 或者 array/object data = typeof data == 'string' ? data : jQuery.param(data); // 把参数组装成 form的 input var inputs = ''; jQuery.each(data.split('&'), function(){ var pair = this.split('='); inputs+='<input type="hidden" name="'+ pair[0] +'" value="'+ pair[1] +'" />'; }); // request发送请求 jQuery('<form action="'+ url +'" method="'+ (method||'post') +'">'+inputs+'</form>') .appendTo('body').submit().remove(); }; };***也就是动态渲染表单,提交表单后再删除。*** 调用实例 复制代码 代码如下:$.download('ExcelDownload.do','find=commoncode',

核心代码复制代码 代码如下:function slide(src,link,text,target,attr,desc) {   this.desc = desc   this.src = src;   this.link = link;   this.text = text;   this.target = target;   this.attr = attr;   if (document.images) {     this.image = new Image();   }   this.loaded = false;   this.load = function() {     if (!document.images) { return; }     if (!this.loaded) {       this.image.src = this.src;       this.loaded = true;     }   }   this.hotlink = function() {     var mywindow;     if (!this.link) return;     if (this.target) {       if (this.attr) {         mywindow = window.open(this.link, this.target, this.attr);       } else {         mywindow = window.open(this.link, this.target);       }       if (mywindow && mywindow.focus) mywindow.focus();     } else {       location.href = this.link;     }   } } function slideshow( slideshowname ) {   this.name = slideshowname;   this.repeat = true;   this.prefetch = -1;   this.image;   this.textid;   this.textarea;   this.timeout = 5000;   this.slides = new Array();   this.current = 0;   this.timeoutid = 0;   this.add_slide = function(slide) {     var i = this.slides.length;     if (this.prefetch == -1) {       slide.load();     }     this.slides[i] = slide;   }   this.play = function(timeout) {     this.pause();     if (timeout) {       this.timeout = timeout;     }     if (typeof this.slides[ this.current ].timeout != 'undefined') {       timeout = this.slides[ this.current ].timeout;     } else {       timeout = this.timeout;     }     this.timeoutid = setTimeout( this.name + ".loop()", timeout);   }   this.pause = function() {     if (this.timeoutid != 0) {       clearTimeout(this.timeoutid);       this.timeoutid = 0;     }   }   this.update = function() {     if (! this.valid_image()) { return; }     if (typeof this.pre_update_hook == 'function') {       this.pre_update_hook();     }     var slide = this.slides[ this.current ];     var dofilter = false;     if (this.image &&         typeof this.image.filters != 'undefined' &&         typeof this.image.filters[0] != 'undefined') {       dofilter = true;     }     slide.load();     if (dofilter) {       if (slide.filter &&           this.image.style &&           this.image.style.filter) {         this.image.style.filter = slide.filter;       }       this.image.filters[0].Apply();     }     this.image.src = slide.image.src;     if (dofilter) {       this.image.filters[0].Play();     }     this.display_text();     if (typeof this.post_update_hook == 'function') {       this.post_update_hook();     }     if (this.prefetch > 0) {       var next, prev, count;       next = this.current;       prev = this.current;       count = 0;       do {         if (++next >= this.slides.length) next = 0;         if (--prev < 0) prev = this.slides.length - 1;         this.slides[next].load();         this.slides[prev].load();       } while (++count < this.prefetch);     }   }   this.goto_slide = function(n) {     if (n == -1) {       n = this.slides.length - 1;     }     if (n < this.slides.length && n >= 0) {       this.current = n;     }     this.update();   }   this.goto_random_slide = function(include_current) {     var i;     if (this.slides.length > 1) {       do {         i = Math.floor(Math.random()*this.slides.length);       } while (i == this.current);       this.goto_slide(i);     }   }   this.next = function() {     if (this.current < this.slides.length - 1) {       this.current++;     } else if (this.repeat) {       this.current = 0;     }     this.update();   }   this.previous = function() {     if (this.current > 0) {       this.current--;     } else if (this.repeat) {       this.current = this.slides.length - 1;     }     this.update();   }   this.shuffle = function() {     var i, i2, slides_copy, slides_randomized;     slides_copy = new Array();     for (i = 0; i < this.slides.length; i++) {       slides_copy[i] = this.slides[i];     }     slides_randomized = new Array();     do {       i = Math.floor(Math.random()*slides_copy.length);       slides_randomized[ slides_randomized.length ] =         slides_copy[i];       for (i2 = i + 1; i2 < slides_copy.length; i2++) {         slides_copy[i2 - 1] = slides_copy[i2];       }       slides_copy.length--;     } while (slides_copy.length);     this.slides = slides_randomized;   }   this.get_text = function() {     return(this.slides[ this.current ].text);   }   this.get_all_text = function(before_slide, after_slide) {     all_text = "";     for (i=0; i < this.slides.length; i++) {       slide = this.slides[i];       if (slide.text) {         all_text += before_slide + slide.text + after_slide;       }     }     return(all_text);   }   this.display_text = function(text) {     if (!text) {       text = this.slides[ this.current ].text;     }     if (this.textarea && typeof this.textarea.value != 'undefined') {       this.textarea.value = text;     }     if (this.textid) {       r = this.getElementById(this.textid);       if (!r) { return false; }       if (typeof r.innerHTML == 'undefined') { return false; }       r.innerHTML = text;     }   }   this.hotlink = function() {     this.slides[ this.current ].hotlink();   }   this.save_position = function(cookiename) {     if (!cookiename) {       cookiename = this.name + '_slideshow';     }     document.cookie = cookiename + '=' + this.current;   }   this.restore_position = function(cookiename) {     if (!cookiename) {       cookiename = this.name + '_slideshow';     }     var search = cookiename + "=";     if (document.cookie.length > 0) {       offset = document.cookie.indexOf(search);       if (offset != -1) {          offset += search.length;         end = document.cookie.indexOf(";", offset);         if (end == -1) end = document.cookie.length;         this.current = parseInt(unescape(document.cookie.substring(offset, end)));         }      }   }   this.noscript = function() {     $html = "\n";     for (i=0; i < this.slides.length; i++) {       slide = this.slides[i];       $html += '<P>';       if (slide.link) {         $html += '<a href="' + slide.link + '">';       }       $html += '<img src="' + slide.src + '" ALT="slideshow image">';       if (slide.link) {         $html += "<\/a>";       }       if (slide.text) {         $html += "<BR>\n" + slide.text;       }       $html += "<\/P>" + "\n\n";     }     $html = $html.replace(/\&/g, "&" );     $html = $html.replace(/</g, "<" );     $html = $html.replace(/>/g,

复制代码 代码如下:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>Login.html</title>    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">    <meta http-equiv="description" content="this is my page">    <meta http-equiv="content-type" content="text/html; charset=UTF-8">    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->    <script type="text/javascript">      function checkuser() {         if($('uname' == "lala") && $('pwd') == "123") {           return true;         }else {            return false;         }      }      function $(id) {        return document.getElementById(id).value;      }     </script>  </head>  <body>    <form action="ok.html">      u:<input type="text" id="uname"/><br>      p:<input type="password" id="pwd"/><br>      <input type="submit" value="登录" onclick="return checkuser()"/>    </form>  </body></html>这是登录页面,只有当用户名为lala,密码为123时登录成功。在onclick事件处使用return,是在用户名和密码输入不符时,阻止页面跳转。登录成功页面中,含有等待秒数,代码为: 复制代码 代码如下:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>ok.html</title>    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">    <meta http-equiv="description" content="this is my page">    <meta http-equiv="content-type" content="text/html; charset=UTF-8">    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->    <script type="text/javascript">        function tiao() {          clearInterval(mytime);          window.open("manage.html","_self");        }        setTimeout("tiao()",5000);        function changeSec() {           //得到myspan值           $('myspan').innerText=$('myspan').innerText-1;        }         function $(id) {        return document.getElementById(id);      }        var mytime = setInterval("changeSec()",1000);    </script>  </head>  <body>    登录成功,<span id="myspan">5</span>秒后自动跳转到管理页面  </body></html>关键在几个函数的使用,setTimeout("tiao()",5000);函数是打开页面,等待5秒,调用tiao()函数。setInterval("changeSec()",1000);函数是每隔1秒调用一次changeSec()函数。这样就完成了简单的登录功能。

焦点访谈

最新最热的文章

更多 >

COPYRIGHT (©) 2017 Copyright ©2017 888真人 网站地图

联系我们

827570882

扫描二维码分享到微信