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

动态页面加载--重写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();

})

分享到:
评论

相关推荐

    定制某一个页面导航栏样式(页面加载前).zip

    "定制某一个页面导航栏样式(页面加载前)"这个主题涉及到的核心知识点主要集中在Objective-C(OC)编程语言,以及UIKit框架中的UINavigationController和UIBarItem等相关类。下面我们将深入探讨如何在页面加载前实现...

    WPF页面动态生成.7z

    3. **LoadOperation** 对于MVVM(Model-View-ViewModel)架构,通常使用INavigationService的LoadOperation来处理页面加载过程,包括导航参数的传递和处理。 ### 控件动态加载 动态加载控件涉及到以下几个关键点:...

    使用webview加载本地html页面,并处理html页面中的javascript事件

    并处理html页面中的javascript事件”探讨了如何利用WebView来加载本地HTML文件,并且如何处理HTML页面中的JavaScript事件,这对于创建混合型应用或实现特定功能(如在原生应用中展示动态内容)非常有用。 首先,...

    ASP.NET控件重写

    - 性能优化:对控件进行优化,减少不必要的处理,提高页面加载速度。 - 用户界面定制:根据项目需求,创建具有独特外观和交互的控件。 - 代码复用:创建自定义控件库,方便在多个项目中重复使用。 2. 控件重写的...

    android使用了自定义button自定义tabHost切换页面Demo

    5. **动态加载Tab**:根据实际需求,可以动态地添加或删除Tab,以适应内容的变化。 在“自定义tabhost使用了不同默认的上标签切换页面”这一描述中,我们可以理解为每个Tab可能展示不同的内容,而这些内容可能是...

    DataGridView添加Button按钮

    在数据加载完成后,动态添加Button控件到相应的单元格。 通过以上步骤,你就可以在VB.NET的VS2005环境下实现DataGridView中Button的添加和功能实现。这个功能增强了用户界面的交互性,使得用户能更直观地对数据进行...

    jquery重写window alert 信息提示

    在`jquery-latest.js`和`jquery-latest.pack.js`中,包含了最新的jQuery库,这两个文件都是压缩版,`pack.js`是进一步压缩过的,以减少页面加载时间。 为了重写`alert`,我们可以创建一个自定义的函数,例如`custom...

    Android--ViewPage滑动加载大图和点击关注效果.zip

    对于`PagerAdapter`的自定义,我们需要重写`instantiateItem()`、`destroyItem()`等方法,确保正确地创建和销毁页面。滑动动画可以通过`ViewPager.addOnPageChangeListener()`监听页面滑动事件,并设置相应的过渡...

    Android炫酷小巧多功能Button

    使用`LayoutInflater.from(context).inflate(R.layout.button_layout, parent, false)`加载布局,然后使用`parent.addView(button)`将按钮添加到指定容器。 4. **按钮点击事件**: 设置按钮的点击事件通常有两种...

    Android中替换WebView加载网页失败时的页面

    本文将详细介绍如何在Android中替换WebView加载网页失败时的默认页面,实现自定义错误提示页面。 首先,我们需要创建一个新的布局文件,用于存放自定义的错误页面。这个布局可以包含任何希望展示给用户的元素,比如...

    viewpager,可滑动button

    `ViewPager`通过适配器(如`FragmentPagerAdapter`或`PagerAdapter`)来管理这些页面,适配器负责加载和显示相应的数据。你可以自定义`PagerAdapter`来填充你想要展示的视图,例如图片、文本或者动画,以增加视觉...

    android适应横竖屏登录模块toolsbar重写BaseAdapter.zip

    本项目"android适应横竖屏登录模块toolsbar重写BaseAdapter.zip"主要展示了如何实现一个登录界面,该界面能够根据设备的横竖屏自动调整布局,并且在主页面中对ToolBar进行了自定义,利用重写的BaseAdapter实现了类似...

    android页面布局fragment五个按钮切换页面

    在Android应用开发中,Fragment是实现界面动态性和灵活性的关键组件。Fragment可以理解为一个可插入到Activity中的小型视图层次结构,它有自己的生命周期,并且可以在需要时被添加、替换或移除。本教程将深入探讨...

    Android构建一个通用的WebView(二):自定义的错误页面、缓存数据,离线浏览

    为了在用户离线时自动加载缓存的页面,我们还需要重写`onReceivedSslError()`方法,接受所有SSL证书(这一步仅用于演示,实际应用中需谨慎处理): ```java webView.setWebViewClient(new WebViewClient() { ... ...

    asp.net生成html页面

    当生成HTML页面时,考虑到网络传输效率,可以使用GZip或Deflate等压缩算法对HTML进行压缩,减少页面加载时间。同时,合并CSS和JavaScript文件、优化图片等也是提高性能的关键。 6. **SEO优化**: 生成静态HTML有...

    viewpagerDemon

    要使ViewPager工作,你需要创建一个继承自`PagerAdapter`的类,例如`FragmentPagerAdapter`或`FragmentStatePagerAdapter`,并重写`instantiateItem()`和`destroyItem()`方法,以便在ViewPager中加载和销毁页面。...

    基于ASP的美眉写真内容联盟伪静态后台体验版 v4.7.zip

    伪静态技术是将动态页面的URL转换为静态页面的URL形式,以提高网站的加载速度和SEO优化效果。在ASP中实现伪静态,通常会利用IIS(Internet Information Services)服务器的重写规则或者通过服务器端的URLRewrite模块...

    MFC界面中加载duilib;duilib界面中添加MFC控件。

    2. **初始化Duilib**:在MFC的主窗口类(通常是CMainFrame或CDialog)中,重写 OnInitInstance() 方法,加入Duilib的初始化代码,例如: ```cpp bool CMainFrame::OnInitInstance() { // ...其他MFC初始化代码.....

Global site tag (gtag.js) - Google Analytics