2 x291944973 x291944973 于 2016.04.08 10:19 提问

extjs更该tools的disable属性问题

有个tabpanel,每个tab上有一个panel,且panel有tools;
我想通过某个按钮的操作切换tools的disabled属性,但是出现两个问题:
1.Ext.getCmp('shipSetModule').tools[0].enable();会报错Uncaught TypeError: Ext.getCmp('shipSetModule').tools[0].disable is not a function,但是使用Ext.getCmp('shipSetModule').tools[0].disabled=false;就不报错,想不通为什么。。。
2.通过按钮操作tools的disabled属性页面上不生效,想不通为什么。。。
求解答。。。
补充一下代码:
id : 'orderDetailTabpanel',
xtype : 'tabpanel',
enableTabScroll: true, //选项卡过多时,允许滚动
defaults: { autoScroll: true },
items : [{
id : 'tab1',
title : '基本信息',
closable : false,
items : [{
xtype: 'form',
id:'orderSetModule',
itemId : 'orderSetModule',
// title:'基本信息',
width: '100%',
collapsible:true,
titleCollapse:true,
defaults: {
labelWidth: 200,
columnWidth: 1
},
items : [ {
xtype: 'fieldcontainer',
layout: 'column',
items: [
{xtype : "displayfield", name : 'orderSn', fieldLabel : "订单号", columnWidth: .33 },
{xtype : "displayfield", name : 'orderOutSn', fieldLabel : "外部交易号", columnWidth: .33} ,
{xtype : "displayfield", name : 'ordertotalstatusStr', fieldLabel : "订单状态", columnWidth: .33,
renderer : function (value) { return ""+value+""; } }
]
} ,
{
xtype: 'fieldcontainer',
layout: 'column',
items: [
{xtype : "displayfield", name : 'channelName', fieldLabel : "订单来源", columnWidth: .33 } ,
{xtype : "displayfield", name : 'clearTime', fieldLabel : "结算时间", columnWidth: .33 } ,
{xtype : "displayfield", name : 'userName', fieldLabel : "购货人", columnWidth: .33}
]
} ,
{
xtype: 'fieldcontainer',
layout: 'column',
items: [
{xtype : "displayfield", name : 'addTime', fieldLabel : "下单时间", columnWidth: .33},
{xtype : "displayfield", name : 'transTypeStr', fieldLabel : "订单交易类型", columnWidth: .33 } ,
//分仓发货状态(0,未分仓 1,已分仓未通知 2,已分仓已通知)
{xtype : "displayfield", name : 'depotStatus', fieldLabel : "分仓发货状态", columnWidth: .33,
renderer : function (value) {
if(value==2){
return "已分仓已通知";
}else if(value==1){
return "已分仓未通知";
}else{
return "未分仓";
}
}
}
]
} ,
{
xtype: 'fieldcontainer',
layout: 'column',
items: [
{xtype : "displayfield", name : 'orderTypeStr', fieldLabel : "订单类型", columnWidth: .33},
{xtype : "displayfield", name : 'relatingReturnSn', fieldLabel : "关联退货单号", columnWidth: .33,
renderer : function (v) {
if (v != null && v != '') {
var url = order_return_url + v
return '' + v +'';
}
return "";
}
},
{xtype : "displayfield", name : 'prName', fieldLabel : "促销信息", columnWidth: .33}
]
} ,
{
xtype: 'fieldcontainer',
layout: 'column',
items: [
{xtype : "displayfield", name : 'relatingOriginalSn', fieldLabel : "关联原订单号", columnWidth: .33,
renderer : function (v) {
if (v != null && v != '') {
var url = order_info_url + v
return '' + v +'';
}
return "";
}
},
{xtype : "displayfield", name : 'invoicesOrganization', fieldLabel : "单据组织", columnWidth: .33 } ,
{xtype : "displayfield", name : 'orderCategoryStr', fieldLabel : "订单种类", columnWidth: .33}
]
},
{
xtype: 'fieldcontainer',
layout: 'column',
items: [
//是否为团购订单( 0:否 1;是)
{xtype : "displayfield", name : 'isGroup', fieldLabel : "团购订单", columnWidth: .33,
renderer : function (value) {
if(value==1){
return "是";
}else{
return "否";
}
}
},
//是否为预售商品(0:否 1:是)
{xtype : "displayfield", name : 'isAdvance', fieldLabel : "订单含预售商品", columnWidth: .33,
renderer : function (value) {
if(value==1){
return "是";
}else{
return "否";
}
}
}, {xtype : "displayfield", name : 'reason', fieldLabel : "原因", columnWidth: .33,
renderer : function (value) {
if(value=="S"){
return "零售";
}else if(value=="J"){
return "物资领用";
}else if(value=="T"){
return "其它出库";
}
}
}
]
} ,
{
xtype: 'fieldcontainer',
layout: 'column',
items: [
{xtype : "displayfield", name : 'cancelReason', fieldLabel : "取消订单原因", columnWidth: 1}
]
} ],
tools : [ {
disabled : true,
type: 'refresh',
handler: function(){
Ext.getCmp('orderShow').initData();
Ext.msgBox.msg('刷新', "刷新页面成功!", Ext.MessageBox.INFO);
}
} ]
}]
}
只贴了部分 不是一个完整的tabpannel

2个回答

x291944973
x291944973   2016.04.08 14:19
已采纳

已解决
tabpanel加上属性:deferredRender:false,就可以了
还是使用Ext.getCmp('shipSetModule').tools[1].enable();的赋值语句
如果使用Ext.getCmp('shipSetModule').tools[1].disabled=false,还需要针对tool的样式cls样式进行修改
所以还是Ext.getCmp('shipSetModule').tools[1].enable();方法更方便

showbo
showbo   Ds   Rxr 2016.04.08 10:33
x291944973
x291944973 tab上的form
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Extjs 修改disabled属性值方法
if(form.disabled===true){ form.enable(); //将disabled设置为false,即把form设置为可编辑状态; }
extjs textField disabled readOnly属性
<br />extjs textfield 设置成为了disabled:true以后此文本框的内容就无法通过form表单提交到后台去了,disable:true就不能submit,<br />不了解ext的设计组这样设置有什么样的好处?还请明了者相告?不胜感激,<br />但是又想让文本框不可编辑,还要能将其内的值提交到后台去,extjs还为我们提供的类型,html的不可编辑表单的解决方案;<br />其实方案很简单:ext提供了readOnly的属性;<br />disabled:原版英文介绍:<br /
ExtJs中disabled和readOnly美观度的分析
ExtJs中disabled和readOnly美观度的分析 ExtJs中,如果设置输入框为只读属性,一般第一考虑的都是readonly=true 它的效果和正常输入框一样,但是不允许输入; 然而,它很容易引起歧义,让用户第一感觉是它是输入框,有输入信息的冲动,其实不然; 这时候,可以考虑使用disabled=true属性 这下绝对不会认为可输入
EXT修改Btn的disabled属性
//没有按钮操作权限if (roleValue==0) {                    var button = Ext.getCmp(buttonIds[i]);//根据按钮ID,获得按钮组件对象                    if(button){                        if (button.rendered) {//判断该按钮是否渲染
Ext4.2 窗口工具栏种类 tools type
众所周知,windows右上角有最大化最小化帮助打印等工具栏,Ext也提供了丰富的工具栏,工具栏主要分为以下几种:  close 关闭 minimize 最小化 maximize 最大化 restore 回复 gear 设置 pin 锁定 unpin 解锁 right 向右 left 向左 up 向上 down 向下 refresh
ExtJs buttons的disabled属性,设置为false点击无法触发handler方法
今日在工作时遇到的问题,困扰很久,唉!还是对Ext
ExtJS filefield设置disabled为true后按钮不灰显的解决办法
ExtJS4.1中,filefield设置默认值为true时,
extjs设置为disable后表单无法提交参数到后台的问题
今天发现某个输入框设置field.disable();后,即使提交时有设置field的值,但这个值也无法提交到后台。到网络上搜索下了,另外发现一篇文章,作为以后的参考: --原文地址:http://blog.csdn.net/serenada/article/details/6177878 extjs textfield 设置成为了disabled:true以后此文本框的内容就无法通过form
[Extjs] FormPanel 中button的disabled控制
实现效果:根据输入框是否都已满足条件,控制“保存”按钮是否可点击 具体操作: 1.在FormPanel中,加属性 MonitorValid="true"; 2.在FormPanel中,与Buttons平级,写: 效果图:
extjs4.1实现tree节点checkbox disable的方法探讨
需要实现的效果如图:        当然这是用extjs3做出的效果,在3里面直接node.ui.checkbox.disabled=true即可,如果设置节点就用node.disable();        但是现在问题就是在extjs4.1里面,就是找不到这个方法(反正我翻了很多遍api,就是没找到,如果你找到了,请告诉我一声,下面的方法可以直接路过了,嘿嘿、、、)。