ext_tableform



扩展得到tableform
http://www.codeweblog.com/extjs3-2-already-have-tableform-layout/

Ext.namespace("Ext.ux.layout");

Ext.ux.layout.TableFormLayout = Ext.extend(Ext.layout.TableLayout, {
monitorResize: true,
setContainer: function() {
Ext.layout.FormLayout.prototype.setContainer.apply(this, arguments);
this.currentRow = 0;
this.currentColumn = 0;
this.cells = [];
},
renderItem : function(c, position, target) {
if (c && !c.rendered) {
var cell = Ext.get(this.getNextCell(c));
cell.addClass("x-table-layout-column-" + this.currentColumn);
Ext.layout.FormLayout.prototype.renderItem.call(this, c, 0, cell);
}
},
getLayoutTargetSize : Ext.layout.AnchorLayout.prototype.getLayoutTargetSize,
getTemplateArgs : Ext.layout.FormLayout.prototype.getTemplateArgs,
onLayout : function(ct, target) {
Ext.ux.layout.TableFormLayout.superclass.onLayout.call(this, ct, target);
if (!target.hasClass("x-table-form-layout-ct")) {
target.addClass("x-table-form-layout-ct");
}
var viewSize = this.getLayoutTargetSize(ct, target);
var aw, ah;
if (ct.anchorSize) {
if (typeof ct.anchorSize == "number") {
aw = ct.anchorSize;
} else {
aw = ct.anchorSize.width;
ah = ct.anchorSize.height;
}
} else {
aw = ct.initialConfig.width;
ah = ct.initialConfig.height;
}

var cs = this.getRenderedItems(ct), len = cs.length, i, c, a, cw, ch, el, vs, boxes = [];
var x, w, h, col, colWidth, offset;
for (i = 0; i < len; i++) {
c = cs[i];
// get table cell
x = c.getEl().parent(".x-table-layout-cell");
if (this.columnWidths) {
// get column
col = parseInt(x.dom.className.replace(/.*x\-table\-layout\-column\-([\d]+).*/, "$1"));
// get cell width (based on column widths)
colWidth = 0, offset = 0;
for (j = col; j < (col + (c.colspan || 1)); j++) {
colWidth += this.columnWidths[j];
offset += 10;
}
w = (viewSize.width * colWidth) - offset;
} else {
// get cell width
w = (viewSize.width / this.columns) * (c.colspan || 1);
}
// set table cell width
x.setWidth(w);
// get cell width (-10 for spacing between cells) & height to be base width of anchored component
w = w - 10;
h = x.getHeight();
// If a child container item has no anchor and no specific width, set the child to the default anchor size
if (!c.anchor && c.items && !Ext.isNumber(c.width) && !(Ext.isIE6 && Ext.isStrict)){
c.anchor = this.defaultAnchor;
}

if(c.anchor){
a = c.anchorSpec;
if(!a){ // cache all anchor values
vs = c.anchor.split(' ');
c.anchorSpec = a = {
right: this.parseAnchor(vs[0], c.initialConfig.width, aw),
bottom: this.parseAnchor(vs[1], c.initialConfig.height, ah)
};
}
cw = a.right ? this.adjustWidthAnchor(a.right(w), c) : undefined;
ch = a.bottom ? this.adjustHeightAnchor(a.bottom(h), c) : undefined;

if(cw || ch){
boxes.push({
comp: c,
width: cw || undefined,
height: ch || undefined
});
}
}
}
for (i = 0, len = boxes.length; i < len; i++) {
c = boxes[i];
c.comp.setSize(c.width, c.height);
}
},

parseAnchor : function(a, start, cstart) {
if (a && a != "none") {
var last;
if (/^(r|right|b|bottom)$/i.test(a)) {
var diff = cstart - start;
return function(v) {
if (v !== last) {
last = v;
return v - diff;
}
};
} else if (a.indexOf("%") != -1) {
var ratio = parseFloat(a.replace("%", "")) * .01;
return function(v) {
if (v !== last) {
last = v;
return Math.floor(v * ratio);
}
};
} else {
a = parseInt(a, 10);
if (!isNaN(a)) {
return function(v) {
if (v !== last) {
last = v;
return v + a;
}
};
}
}
}
return false;
},
adjustWidthAnchor : function(value, comp) {
return value - (comp.isFormField ? (comp.hideLabel ? 0 : this.labelAdjust) : 0);
},
adjustHeightAnchor : function(value, comp) {
return value;
},
// private
isValidParent : function(c, target){
return c.getPositionEl().up('table', 6).dom.parentNode === (target.dom || target);
},
getLabelStyle : Ext.layout.FormLayout.prototype.getLabelStyle,
labelSeparator : Ext.layout.FormLayout.prototype.labelSeparator,
trackLabels: Ext.layout.FormLayout.prototype.trackLabels
});
Ext.Container.LAYOUTS['tableform'] = Ext.ux.layout.TableFormLayout;

//使用
var form = new Ext.FormPanel({
border : false,
layout:'tableform',
region:"north",
layoutConfig:{columns:2},
defaultType:'textfield',
labelAlign:'right',
lablewidth:75,
height:300,
frame:true,
defaults:{anchor:'95%'},
items:[
{name:'name',fieldLabel:'登录账号'},
{fieldLabel:'登录密码'},
{fieldLabel:'交易吗',colspan:2}
]
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值