`
dowhathowtodo
  • 浏览: 780530 次
文章分类
社区版块
存档分类
最新评论

动态页面加载--重写button

 
阅读更多


Ext.onReady(function(){

Ext.QuickTips.init();

Ext.loadMask = new Ext.LoadMask(Ext.getBody(), {msg:"加载中..."});

/**
* author : sumin
* time : 2011-3-28
*(0不可见1可用2不可用)
*
* 将菜单的id作为session的name
* @memberOf {TypeName}
*/

Ext.override(Ext.Button,{
initComponent: Ext.Button.prototype.initComponent.createSequence(function(){
this.on({
beforerender : function(btn){
var buttonResource = {};
for(var i=0;i<ziyuanlist.length;i++){
if(ziyuanlist[i].panelid == btn.id){
buttonResource.panelid = ziyuanlist[i].panelid;
buttonResource.ziyuanzhuangtai = ziyuanlist[i].ziyuanzhuangtai
}
}
if(buttonResource.panelid == btn.id){
btn.hidden = buttonResource.ziyuanzhuangtai == 0 //不可见的状态
btn.disabled = buttonResource.ziyuanzhuangtai == 2//不可编辑的状态
alert(buttonResource.ziyuanzhuangtai)
}
}
});
})
})

/**
* @ author sumin
* @time 2011 3 25
* 需要一个store,加载后台module类
*
*/
zyerp.system.PrimaModuleStore = Ext.extend(Ext.data.JsonStore,{
proxy : new Ext.data.HttpProxy({
url: '/zyerp/module/module!loadPrimaModules',
method : "POST"
}),
autoLoad : false,
root : "list", //不要使用Reader,会报TypeError: record is undefined
totalProperty : "total",
idProperty : "id",
fields : [
{ name : "primaModuleId", mapping : "primaModuleId", type : "int" },
{ name : "panelId", mapping : "panelId", type : "string" },
{ name : "name", mapping : "name", type : "string" },
{ name : "visible", mapping : "visible", type : "boolean" },
{ name : "icon", mapping : "icon", type : "string" },
{ name : "orderNum", mapping : "orderNum", type : "int" },
{ name : "resources", mapping : "resources", type : "array" }
],
constructor : function(conf) {
conf = conf || {};
Ext.applyIf(conf, this);
zyerp.system.PrimaModuleStore.superclass.constructor.call(this,
conf
);
}
});


/**
* @auther sumin
* @time 2011 3 25 21:59
* 单击事件 导航树节点单击出后加载相应界面
* contentPanel 分成每一个window的center
*/

zyerp.system.moduleHandler = function (module, contentPanel){
//加载的界面放置到contentPanel中
if(Ext.getCmp(module.panelid)){
contentPanel.setActiveTab(Ext.getCmp(module.panelid));
}else{
if(! module.jsfile) return;
Ext.loadMask.show();
Ext.Ajax.request({
url : module.jsfile,
success : function(response) {
eval(response.responseText);
var tab = Ext.getCmp(module.panelid);
tab.show();
contentPanel.add(tab);
contentPanel.doLayout(true);
contentPanel.setActiveTab(tab);
Ext.loadMask.hide();
},
failure : function(response) {
Ext.MessageBox.alert("错误", "系统加载失败,请稍后重试或联系管理员.");
Ext.loadMask.hide();
}
});
}
}

/**
* author 苏民
* time 2011-3-25
* 导航树所在的panel
*/
zyerp.system.oERPPanel = new Ext.Panel({
title : "功能列表",
region : "west",
width : 180,
height : 300,
layout : 'accordion',
collapsible : true,
layoutConfig : {
activeOnTop : false,
animate : false
},
listeners : {
afterrender : function() {
zyerp.system.moduleStore.load();
}
}
});


/**
* author : sumin
* time : 2011-3-25
* 导航树
* @memberOf {TypeName}
*/
zyerp.system.navigaterTree = Ext.extend(Ext.tree.TreePanel,{
split : true,
width : 180,
autoLoad : false,
autoScroll : true,
rootVisible : false,
module : null,
initComponent : function(){
var oThis = this;
this.loader = new Ext.tree.TreeLoader({
dataUrl : "/zyerp/resource/resource!loadNavigaterTreeNode",
method : "post",
listeners : {
beforeload : function(treeloader,node){
//所在的panel
this.baseParams.moduleId = oThis.module.primaModuleId
this.baseParams.nodeId = node.id;
},
loadexception: function(oThis, node, response) {
alert(Ext.util.JSON.encode(response));
}
}
});
/* 根节点 */
this.root = new Ext.tree.AsyncTreeNode({
id : "0",
text : "客户目录",
expanded : true,
leaf : false
});

zyerp.system.navigaterTree.superclass.initComponent.call(this);
}
})

/**
* @author sumin
* @time 2011 3 25
* 实现erp.sys.PrimaModuleStore 监听store 的load事件
* 监听的过程中,将导航栏的菜单画出
*/
zyerp.system.moduleStore = new zyerp.system.PrimaModuleStore({
listeners: {
beforeload : function(s,opt){
s.loadMask = new Ext.LoadMask(zyerp.system.oERPPanel.body,{
msg : "正在加载……"
})
s.loadMask.show();
},
load : function(s, records, options){
s.each(function(r){
//获得模块
if(!r) return;
var module = r.data;
//创建一个panel
//将panel放置在界面上一个window的导航panel中
//加载该module的submodules
//将加载的submodules放置成一棵树
//设置树节点的单击事件:加载对应的界面
var primaPanel = new zyerp.system.navigaterTree({
title : module.name,
module : module,
listeners : {
expand : function() {
this.doLayout();// 重新布局
},
click : function(node,e){
if(node.isLeaf()){
var module = {};
module.jsfile = node.attributes.jsfile;
module.panelid = node.attributes.panelid;
zyerp.system.moduleHandler(module,zyerp.system.oContent)
}
}
}
});
zyerp.system.oERPPanel.add(primaPanel)

primaPanel.doLayout();
})
zyerp.system.oERPPanel.doLayout();
s.loadMask.hide();
}
}
})

/**
* author : sumin
* time : 2011-3-25
* 导航树节点单击的js在这个tabpanel中渲染
* @param {Object} t
* @param {Object} p
*/
zyerp.system.oContent = new Ext.TabPanel({
region : "center",
resizeTabs:true, // turn on tab resizing
minTabWidth: 115,
tabWidth:135,
enableTabScroll:true,
defaults: {autoScroll:true},
plugins: new Ext.ux.TabCloseMenu(),
listeners : {
'tabchange': function(t, p) {
t.doLayout();
}
}
})

/**
* author : sumin
* time : 2011-3-25
* 我的工作台窗口
*/
zyerp.system.oDeskWin = new Ext.Window({
title: "我的工作台",
x: 20,
y: 20,
resizable: false,
minimizable: true,
maximizable: true,
width: 200,
height: 280,
layout : "border",
items:[zyerp.system.oERPPanel,zyerp.system.oContent]
});

zyerp.system.oDeskWin.show();

})

分享到:
评论

相关推荐

    vant组件中 dialog的确认按钮的回调事件操作

    不知道是不是我理解有问题,看了vant的组件库,他的文档是这样说的 然后我就绑定了事件 :confirm 结果他的触发机制是:加载页面时会触发,...有关props 两个属性 confirm-button-text 与 cancel-button-text 。 co

    为Google Play音乐:trade_mark:播放午夜「Play Midnight for Google Play Music:trade_mark:」-crx插件

    hosted_button_id=KHH9ZJHH42FF4J要更改Play Midnight的颜色选项,请单击屏幕右下角的Play Midnight齿轮 ,在音量/队列按钮旁边。 关于迷你播放器的注意事项:迷你播放器在您的计算机上使用独立于Chrome的单独应用...

    asp.net知识库

    完整的动态加载/卸载程序集的解决方案 从NUnit中理解.NET自定义属性的应用(转载) 如何在.NET中实现脚本引擎 (CodeDom篇) .NET的插件机制的简单实现 我对J2EE和.NET的一点理解 难分难舍的DSO(一) ...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity——Intent对象的使用 3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 ...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity——Intent对象的使用 3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 ...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity——Intent对象的使用 3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 ...

    大名鼎鼎SWFUpload- Flash+JS 上传

    它还提供了一组简明的JavaScript事件,借助它们开发者可以方便的在文件上传过程中更新页面内容来营造各种动态效果。  在使用SWFUpload之前,请确认你具备一定的JavaScript和DOM知识。在实际开发中,大部分的错误都...

    Google Android SDK开发范例大全的目录

    3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity——Intent对象的使用 3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 ...

    vc++ 开发实例源码包

    详细讲解了Crypt++的加密解密的使用以及其它的加密解密方法(例如base64加解密、哈希加解密以及其它的文件加解密),分静态库和动态库方法。 JSCalls_demo js调用的演示源码 树控件拖动 演示了在树控件中来回拖动...

    Google Android sdk 开发范例大全 部分章节代码

    3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity——Intent对象的使用 3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 ...

    Google Android SDK 开发范例大全01

    3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity——Intent对象的使用 3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 ...

    Google Android SDK 开发范例大全02

    3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity——Intent对象的使用 3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 ...

    Google+Android+SDK开发范例大全

    3.7 简易的按钮事件——Button事件处理 3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity——Intent对象的使用 3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity——Intent对象的使用 3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法...

    Google Android SDK开发范例大全(完整版)

    3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity——Intent对象的使用 3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 ...

    jquery插件使用方法大全

    要等到页面全部加载完毕才执行,注意是全部加载,包括dom,图片等其它资源。 而$(document).ready(function(){ alert&#40;"hello"&#41;; });(1) 当dom加载完就可以执行了。 代码1同时做到表现和逻辑分离。并且可以在...

    flex3的cookbook书籍完整版dpf(包含目录)

    如何去验证多个Combo Box及Radio Button组件 15.6节. 如何在一个表单内通过ToolTips来返映一个错误 15.7节. 如何使用正则表达式去定位电邮地址 15.8节. 如何使用正则表达式去验证信用卡号码 15.9节. 如何使用正则...

Global site tag (gtag.js) - Google Analytics