Ext的学习记录
学习Ext有一年多了想把Ext的一些基本的写法记录下来:
1.遮罩
var box = Ext.MessageBox.show({
msg : '正在确认数据,请稍候……',
progressText : '',
width : 200,
height : 100,
progress : false,
closable : false,
wait : false
});
2.Ajax
Ext.Ajax.request({
url : '',
timeout : 10000000,
method : 'POST',
success : function(response, optional) {
box.hide();
var ret = Ext.util.JSON.decode(response.responseText);
if(ret.msg != ""){
vLongInfo +="\r\n" + ret.msg;
Ext.getCmp("").setValue(vLongInfo);
}
}.createDelegate(this),
failure : function(response, optional) {
box.hide();
}.createDelegate(this)
});
};
3.gridpanel的例子
this.store = new Ext.data.Store({
baseParams : {limit:50},
timeout : 99999999,
reader : new Ext.data.JsonReader({
totalProperty:'totalCount',
id : "id",
root : "result"
}, [
{
name : 'v_id',
mapping : 'v_id'
},
{
name : 'credit_money',
mapping : 'credit_money'
}
]),
proxy : new Ext.data.HttpProxy({
url : 'ui/modules/bc/TBCRefundment/tBCFundmentReexamineAction_applyMessage.action'
})
});
this.panel = new Ext.grid.GridPanel({
bbar : new Ext.PagingToolbar({
xtype : 'paging',
pageSize : 50,
store : this.store,
displayInfo : true,
displayMsg : '显示记录从 {0} 到 {1} 总共 {2}',
emptyMsg : '没有记录'
}),
region:"center",
store : this.store,
id:"",
loadMask: {msg:'正在取数,请稍等!'},
border : false,
/*
tbar :
[
'模糊查找: ',
{
xtype:'uxSearchField',
store:this.storeMainPanel,
width:130
}
],
*/
colModel : new Ext.grid.ColumnModel({
columns : [
new Ext.grid.RowNumberer(),
{
width : 80,
hidden : true,
header : 'v_id',
dataIndex : 'v_id',
sortable : true
},
,
{
width : 150,
align:'Right',
SortTypes:'Float',
hidden : !true,
header : '金额',
dataIndex : 'credit_money',
sortable : true,
renderer : usMoney
}
]
})
});
3.gridpanel 的头部和尾部
Ext.namespace('func_CwRefundmentInfo');
func_CwRefundmentInfo.MainPanel = function(config) {
Ext.applyIf(this, config);
this.initUIComponents();
func_CwRefundmentInfo.MainPanel.superclass.constructor.call(this);
};
Ext.extend(func_CwRefundmentInfo.MainPanel, Ext.Panel, {
initUIComponents : function() {
//内容
Ext.apply(this, {
layout : "fit",
items : [{
xtype : "textarea",
id : "",
readOnly : true
}],
tbar : new Ext.Toolbar([ {
handler : function(button, event) {
this.onImportClick(button, event);
}.createDelegate(this),
text : "退款报账确认",
iconCls : "btn_add"
}])
});
// END OF CODE GENERATION PARTS, DON'T DELETE CODE ABOVE
}
});
Ext.reg('bc.func_RefundmentReexamine.main', bc.func_RefundmentReexamine.main);
4.金额显示的的函数
function usMoney(v)
{
v = (Math.round((v-0)*100))/100;
v = (v == Math.floor(v)) ? v + ".00" : ((v*10 == Math.floor(v*10)) ? v + "0" : v);
v = String(v);
var ps = v.split('.');
var whole = ps[0];
var sub = ps[1] ? '.'+ ps[1] : '.00';
var r = /(\d+)(\d{3})/;
while (r.test(whole)) {
whole = whole.replace(r, '$1' + ',' + '$2');
}
v = whole + sub;
if(v.charAt(0) == '-'){
return '-' + v.substr(1);
}
return "" + v;
};
5.导入的模板
/**
* 导入.
* */
public String fileUploadList(File file, String fileFileName)throws Exception{
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
if(fileFileName==null){
throw new Exception("请选择文件!");
}
if(!fileFileName.substring(fileFileName.length()-3, fileFileName.length()).equals("xls")){
if(fileFileName.substring(fileFileName.length()-4, fileFileName.length()).equals("xlsx")){
throw new Exception("暂不支持该版本的excel表格,请将文件另存为后缀名为“.xls”的文件!");
}else {
throw new Exception("\""+fileFileName+"\""+"不是Excel文件,请重新选择!");
}
}
/**
* Workbook.getWorkbook(file)获取要导入的excel文件.
* wb.getSheet(0)获取excel文件的第一个页签的内容.
* */
Workbook wb = Workbook.getWorkbook(file);
Sheet sheet = wb.getSheet(0);
/**
* getCell(int column, int row)锁定单元格位置.
* getContents()获取单元格内容.
* Trim() 函数的功能是去掉首尾空格.
* */
String column1 = sheet.getCell(0, 0).getContents().toString().trim();
if(column1.equals("")||!column1.equals("姓名")){
throw new Exception("检测出错:第1行第1列头不为姓名!");
}
String column2 = sheet.getCell(1, 0).getContents().toString().trim();
if(!column2.equals("性别")){
throw new Exception("检测出错:第1行第2列头不为性别!");
}
String column3 = sheet.getCell(2, 0).getContents().toString().trim();
if(!column3.equals("年龄")){
throw new Exception("检测出错:第1行第3列头不为年龄!");
}
String column4 = sheet.getCell(3, 0).getContents().toString().trim();
if(!column4.equals("出生年月")){
throw new Exception("检测出错:第1行第4列头不为出生年月!");
}
String column5 = sheet.getCell(4, 0).getContents().toString().trim();
if(!column5.equals("学号")){
throw new Exception("检测出错:第1行第5列头不为学号!");
}
String column6 = sheet.getCell(5, 0).getContents().toString().trim();
if(!column6.equals("专业")){
throw new Exception("检测出错:第1行第6列头不为专业!");
}
String column7 = sheet.getCell(6, 0).getContents().toString().trim();
if(!column7.equals("入学时间")){
throw new Exception("检测出错:第1行第7列头不为入学时间!");
}
/**
* 循环遍历当前excel页签的单元格内容,放进list集合.
* getRows()获取当前excel页签的行数.
* getRow()获取当前行的数据.
* */
for(int i =1;i<sheet.getRows();i++){
if(sheet.getRow(i)==null||sheet.getRow(i).equals("")){
continue;
}
Map<String,Object> map=new HashMap<String,Object>();
String studentName = sheet.getCell(0, i).getContents().toString();
String sexString = sheet.getCell(1, i).getContents().toString();
String ageString = sheet.getCell(2, i).getContents().toString();
String birthday = sheet.getCell(3, i).getContents().toString();
String studentId = sheet.getCell(4, i).getContents().toString();
String major = sheet.getCell(5, i).getContents().toString();
String startDate = sheet.getCell(6, i).getContents().toString();
/**
* 校验空值.
* */
if(null==studentName||"".equals(studentName)){
throw new Exception("你导入的文件第"+i+"行的姓名为空,请修改后重新导入!");
}
if(null==birthday||"".equals(birthday)){
throw new Exception("你导入的文件第"+i+"行的出生年月为空,请修改后重新导入!");
}
if(null==studentId||"".equals(studentId)){
throw new Exception("你导入的文件第"+i+"行的学号为空,请修改后重新导入!");
}
if(null==major||"".equals(major)){
throw new Exception("你导入的文件第"+i+"行的专业为空,请修改后重新导入!");
}
if(null==startDate||"".equals(startDate)){
throw new Exception("你导入的文件第"+i+"行的入学时间为空,请修改后重新导入!");
}
/**
* 校验性别是否符合.
* */
String sex="0";
if (null==sexString||sexString.equals("")) {
sex="0";
}
if(sexString.equals("男")){
sex="0";
}
if(sexString.equals("女")){
sex="1";
}
if(sexString.equals("0")){
sex="0";
}
if(sexString.equals("1")){
sex="1";
}
if(!sex.equals("0")&&!sex.equals("1")){
throw new Exception("您导入的文件第"+i+"行的性别不符合规范,请修改后重新导入!");
}
/**
* 格式化出生年月,校验出生年月是否符合该日期格式.
* */
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
try {
Date bDate=dateFormat.parse(birthday);
birthday=dateFormat.format(bDate);
} catch (Exception e) {
throw new Exception("你导入的文件第"+i+"行的入学时间不符合日期格式,请修改后重新导入!");
}
/**
* 如果年龄为空,则根据出生年自动计算当前年龄.
* */
if (null==ageString||ageString.equals("")) {
Calendar nowDate=Calendar.getInstance();
int nowYear=nowDate.get(Calendar.YEAR);
String yString=birthday.substring(0, 4);
int bYear=Integer.valueOf(yString);
ageString=(nowYear-bYear)+"";
}
/**
* 校验学号是否为数字.
* */
int sId;
try {
sId=Integer.parseInt(studentId);
} catch (Exception e) {
throw new Exception("你导入的文件第"+i+"行的学号不是数字,请修改后重新导入!");
}
/**
* 格式化入学时间,校验入学时间是否符合该日期格式.
* */
try {
Date date=dateFormat.parse(startDate);
startDate=dateFormat.format(date);
} catch (Exception e) {
throw new Exception("你导入的文件第"+i+"行的入学时间不符合日期格式,请修改后重新导入!");
}
/**
* 校验学号是否重复.
* */
List<Object[]> listStudentId= studentInfoDao.checkRepeat(sId);
if (listStudentId.size()!=0) {
throw new Exception("你导入的文件第"+i+"行的学号重复,请修改后重新导入!");
}
String id = UUID.randomUUID().toString();
map.put("studentName", studentName);
map.put("sex", sex);
map.put("ageString", ageString);
map.put("birthday", birthday);
map.put("studentId", studentId);
map.put("major", major);
map.put("startDate", startDate);
map.put("id", id);
list.add(map);
}
int count=studentInfoDao.fileUploadMenuManager(list);
return "成功导入"+count+"条数据!";
}
6.再次确认
Ext.Msg.show({
title:'',
msg: '确定自动!',
buttons: Ext.Msg.YESNO,
fn: function(v) {
if(v=='yes') {
Ext.getCmp('').autoCheck();
}
}.createDelegate(this)
});
};
7.ComboBox
本地数据
var vType = new Ext.form.ComboBox({
width : 150,
xtype : "combo",
readOnly : true,
fieldLabel : "日期类型",
displayField :'depositName',
valueField :'depositType',
store : new Ext.data.SimpleStore({
fields: ['depositType', 'depositName'],
data : [['1','申请日期'],['2','银行到款日期'],['3','锁定日期']]
}),
triggerAction :'all',
mode : 'local',
value : '1' ,
// name : 'endAmount',
id : ""
});
远程的数据
var VSource = new Ext.data.Store({
autoLoad : false,
reader : new Ext.data.JsonReader({
totalProperty: 'totalCount',
id : "id",
root: 'result'
}, [
{
mapping : 'id',
name : 'id'
},
{
mapping : 'name',
name : 'name'
}
]),
proxy : new Ext.data.HttpProxy({url : ''}),
baseParams:{
timeout : 0
}
});
var dirNameCombo = new Ext.form.ComboBox
({
triggerAction: 'all',
store : VSource,
// mode : 'local',
fieldLabel : '数据来源',
// width : 200,
anchor : '98%',
hiddenName : 'seconddirname',
valueField : 'id',
displayField : 'name'
//value : 'seconddirname'
});