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; 

}); 

你可能感兴趣的:(ext)