当前位置: 代码迷 >> Web前端 >> Ext 小结
  详细解决方案

Ext 小结

热度:131   发布时间:2012-06-30 17:20:12.0
Ext 总结

一. GridPanel?

?

var sm = new Ext.grid.CheckboxSelectionModel();?

?

var xmlReader = new Ext.data.XmlReader({?

record : 'row',?

totalProperty : 'results',?

idProperty : 'ROLEID',?

fields : [{?

name : 'roleid',?

mapping : 'ROLEID'?

}, {?

name : 'rolename',?

mapping : 'ROLENAME'?

},{?

name : 'CREATETIME',?

? ? ? ? ? ? ? ? type : 'date',?

? ? ? ? ? ? ? ? dateFormat : 'Y-m-d'?

? ? ? ? ? ? ? ? ? ? ? ? ?}]?

});?

?

var store = new Ext.data.Store({?

autoLoad : true,?

url : 'system/roleStore.action',?

reader : xmlReader?

});?

?

var cm = new Ext.grid.ColumnModel([sm, {?

header : '角色代码',?

dataIndex : 'roleid'?

}, {?

header : '角色名称',?

dataIndex : 'rolename'?

}]);?

?

var expander = new Ext.ux.grid.RowExpander( {?

tpl : new Ext.Template(repairHtml)?

});?

?

var grid = new Ext.grid.GridPanel( {?

cm : cm,?

viewConfig : {?

forceFit : true ?//自动选择列宽?

},?

plugins : expander,?

store : store,?

id : 'query_repair_grid_id',?

border : false,?

region : 'center',?

stripeRows : true,?

bbar : new Ext.PagingToolbar( {?

displayInfo : true,?

store : store,?

plugins : new Ext.ux.grid.PageSize()?

}),?

tbar : [ "-", {?

text : '查询',?

iconCls : 'search-icon',?

handler : this.doQuery.createDelegate(this)?

}, "-" ]?

});?

二. EditorGridPanel?

组装editorGrid与grid基本差不多,如果要设置可以编辑列可以如下设置:?

?

var cm = new Ext.grid.ColumnModel( [ {?

header : "材料类别名称",?

dataIndex : 'CATALOGNAME',?

sortable : true?

}, {?

header : "材料名称",?

dataIndex : 'NAME',?

sortable : true?

}, {?

header : "材料数量",?

dataIndex : 'MATERIALAMOUNT',?

editor : new Ext.form.NumberField( {?

allowBlank : true,?

maxValue : 100?

})?

} ]);?

?

listeners : {?

activate : function(p) {?

this.store.load();?

},?

afteredit : this.afterEdit.createDelegate(obj)?

}?

?

afterEdit : function(obj) {?

var row = obj.record;?

var materialid = row.id;?

var value = obj.value;?

var repairid = this.repairid;?

var self = this;?

Ext.Ajax.request( {?

url : _ctx.base + '/BuildingRepairMaterial/savaBuildingMaterial.action',?

params : {?

materialid : materialid,?

amount : value,?

repairid : repairid?

},?

success : function(response, opts) {?

self.editWindow.stroe.load();?

}?

});?

}?

三. 查询GridPanel?

1. 按数据库字段查询?

?

listeners : {?

'beforeload' : function() {?

var values = self.formPanel.getForm().getValues();?

getQueryParams(values, this.baseParams);?

}?

}?

?

doQuery : function() {?

this.queryGrid.getStore().load();?

}?

?

function getQueryParams(values, baseParams) {?

var i = 0;?

for ( var p in values) {?

var ps = p.split(":");?

if (!ps[1]) {?

ps[1] = "string";?

}?

if (!ps[2]) {?

ps[2] = "like";?

}?

var field = "filter[" + i + "][field]";?

var value = "filter[" + i + "][data][value]";?

var comparison = "filter[" + i + "][data][comparison]";?

var type = "filter[" + i + "][data][type]";?

baseParams[type] = ps[1];?

baseParams[field] = ps[0];?

baseParams[comparison] = ps[2];?

baseParams[value] = values[p];?

i++;?

}?

}?

?

2. 按自设条件查询(ajax查询)?

Ext.Ajax.request( {?

url :’查询的url’,?

params : {?

repairid : id,?

APPRAISESTATE : value?

}?

});?

?

四. FormPanel?

var queryForm = new Ext.FormPanel( {?

labelAlign : 'right',?

labelWidth : 70,?

height : 50,?

region : "north",?

border : false,?

frame : true,?

trackResetOnLoad : true,?

items : [ {?

bodyStyle : "padding:5px 0 0 0",?

layout : 'column',?

items : [ {?

columnWidth : .2,?

layout : 'form',?

items : [ {?

xtype : 'textfield',?

fieldLabel : '报修人',?

name : 'CREATERNAME',?

anchor : '97%'?

} ]?

}, {?

columnWidth : .2,?

layout : 'form',?

items : [ {?

xtype : 'textfield',?

fieldLabel : '报修内容',?

name : 'REPAIRCONTENT',?

anchor : '97%'?

} ]?

}, {?

columnWidth : .2,?

layout : 'form',?

defaultType: 'datefield',?

items : [ {?

vtype: 'daterange',?

fieldLabel : '开始时间',?

format : 'Y-m-d',?

name : 'CREATETIME:date:gt',?

id:'CREATETIME:date:gt',?

endDateField: 'CREATETIME:date:lt',?

anchor : '97%'?

} ]?

}, {?

columnWidth : .2,?

layout : 'form',?

defaultType: 'datefield',?

items : [ {?

vtype: 'daterange',?

fieldLabel : '结束时间',?

format : 'Y-m-d',?

id:'CREATETIME:date:lt',?

name : 'CREATETIME:date:lt',?

startDateField: 'CREATETIME:date:gt',?

anchor : '97%'?

} ]?

} ]?

} ]?

});?

1. 往FormPanel里面的组件传值?

两种方式,一种直接从数据库中查找,另一种从gridpanel中传过来?

? 数据库中直接查找?

?

?

form.load( {?

url : _ctx.base + '/buildingRepair/loadRepair.action',?

params : {?

repairid : r.id?

},?

failure : function(form, action) {?

Ext.Msg.alert("错误", "error");?

},?

waitMsg : 'Loading'?

});?

? 从GridPanel中直接传值?

var r = this.studentVacateGrid.getSelectionModel().getSelected();?

var formPanel = this.createStudentForm();?

formPanel.getForm().loadRecord(r);?

? 渲染FormPanel列的值?

?

{?

header :'性别',?

dataIndex :'SEX',?

renderer : function(value) {?

if (value == 1)?

return "男";?

else?

return "女";?

}?

}?

?

2. 提交FormPanel?

?

formPanel.submit( {?

success : function(response, opts) {?

self.editWindow.hide();?

self.studentVacateGrid.getStore().load();?

}?

3. 将FormPanel值置空?

formPanel.getForm().reset();?

4. 将FormPanel放入window弹出窗口显示?

?

this.editWindow = new Ext.Window( {?

title :'修改请假信息',?

collapsible :true,?

closeAction :'hide',?

maximizable :true,?

width :550,?

height :370,?

minWidth :300,?

minHeight :200,?

layout :'fit',?

plain :true,?

bodyStyle :'padding:5px;',?

buttonAlign :'center',?

items :formPanel?

});?

?

五. Combobox?

1. 调用本地数据?

xtype : 'combo',?

mode : 'local',?

value : '1',?

triggerAction : 'all',?

forceSelection : true,?

editable : false,?

fieldLabel : '评价',?

hiddenName : 'APPRAISESTATE',?

displayField : 'name',?

valueField : 'value',?

anchor : '97%',?

store : new Ext.data.JsonStore( {?

fields : [ 'name', 'value' ],?

data : [ {?

name : '一般',?

value : '1'?

}, {?

name : '好',?

value : '2'?

}, {?

name : '很好',?

value : '3'?

}, {?

name : '差',?

value : '4'?

} ]?

})?

2. 调用远程数据?

?

this.vacateTypeStore = new Ext.data.JsonStore( {?

url : '/vacate/findVacateCatalogList.action',?

fields : [ 'VACATECATALOGID', 'NAME' ]?

});?

this.vacateTypeStore.load();?

?

var vacateTypeCombo = new Ext.form.ComboBox( {?

xtype :'combo',?

store :this.vacateTypeStore,?

valueField :"VACATECATALOGID",?

displayField :"NAME",?

forceSelection :true,?

typeAhead :true,?

hiddenName :'VACATECATALOGID',?

editable :false,?

mode : 'remote',?

triggerAction :'all',?

allowBlank :false,?

fieldLabel :'请假类别',?

anchor :'97%'?

});?

六. TreePanel?

?

var root = new Ext.tree.AsyncTreeNode({?

text : appMeuns[i].MENUNAME,?

draggable : false,?

id : appMeuns[i].MENUID?

});?

var node = new Ext.tree.TreePanel({?

title : appMeuns[i].MENUNAME,?

rootVisible : false,?

loader : new Ext.tree.TreeLoader({?

dataUrl : '/system/meun.action'?

}),?

animate : true,?

autoScroll : true,?

containerScroll : true,?

root : root?

});?

new Ext.tree.TreeSorter(node, {?

folderSort : true?

});?

node.on('click', function(node, e) {?

? ? ? ? ? ? ? ? ?}?

七. 开始日期与结束日期?

?

Ext.apply(Ext.form.VTypes, {?

daterange : function(val, field) {?

var date = field.parseDate(val);?

if(!date){?

return false;?

}?

if (field.startDateField && (!this.dateRangeMax || (date.getTime() != this.dateRangeMax.getTime()))) {?

var start = Ext.getCmp(field.startDateField);?

start.setMaxValue(date);?

start.validate();?

this.dateRangeMax = date;?

}?

else if (field.endDateField && (!this.dateRangeMin || (date.getTime() != this.dateRangeMin.getTime()))) {?

var end = Ext.getCmp(field.endDateField);?

end.setMinValue(date);?

end.validate();?

this.dateRangeMin = date;?

}?

return true;?

}?

});?

  相关解决方案