下面是一个弹出消息框的例子:其中包括grid行点击事件和接听按钮事件
Ext.define('person.view.message.MsgInfo', {
extend : 'Ext.window.Window',initComponent : function() {
var me = this;
var mstore = Ext.create('Ext.data.Store', {// 定义数据源
autoLoad : true,
fields : [ 'pkid', 'msgtitle', 'sqname',"msgId","sqId"],
proxy : {
type : 'ajax',
url : 'query/getTipsWinInfo.do?userType='+userType, // 请求的服务器地址
reader : {
type : 'json',
root : 'data'
}
}});
Ext.apply(me, {
id : 'msginfo',
width : 300,
height : 220,
layout : 'fit',
modal : false,
// plain: true,
shadow : false, // 去除阴影
draggable : true, // 默认不可拖拽
resizable : false,
closable : true,
frame : false,
minimizable:true,
maximizable:true,
animateTarget:this,
title : "提示",
bodyStyle : 'background:#5CA2D5',
closeAction : 'destroy', // 默认关闭为隐藏
listeners : {
minimize: function () {
var me = this;
me.setHeight(0);
me.setWidth(0);
this.initPosition(true);
Ext.EventManager.onWindowResize(this.initPosition, this); // window大小改变时,重新设置坐标
Ext.EventManager.on(window, 'scroll', this.initPosition, this); // window移动滚动条时,重新设置坐标
this.on('beforeshow', this.showTips);
this.on('beforehide', this.hideTips);
// me.hide();
},maximize:function(){
var me = this;
me.setHeight(220);
me.setWidth(300);
this.initPosition(true);
Ext.EventManager.onWindowResize(this.initPosition, this); // window大小改变时,重新设置坐标
Ext.EventManager.on(window, 'scroll', this.initPosition, this); // window移动滚动条时,重新设置坐标
this.on('beforeshow', this.showTips);
this.on('beforehide', this.hideTips);
},close:function(){
if(mstore.data.length>0){
var msid = "";var msgid_shequid="";
for(var i=0;i<mstore.data.length;i++){
var rec=mstore.getAt(i);
msid+=rec.get('pkid')+","//记录表消息
msgid_shequid+=rec.get('msgId')+"-"+rec.get('sqId')+","//源消息
}//alert(msid.substring(0,msid.length-1));
Ext.Ajax.request({
url : 'message/UpdateMsgInfo.do',
method : 'POST',
params: {
msgid : msid.substring(0,msid.length-1),
userType:userType,
msgid_shequid:msgid_shequid
},
success : function(response) {
var messid = response.responseText;
if(messid==1){
me.close();
}
}
});
}
},
show : function() {
me.MsgInfo();
}
}
});
this.initPosition(true);
Ext.EventManager.onWindowResize(this.initPosition, this); // window大小改变时,重新设置坐标
Ext.EventManager.on(window, 'scroll', this.initPosition, this); // window移动滚动条时,重新设置坐标
this.on('beforeshow', this.showTips);
this.on('beforehide', this.hideTips);
this.callParent(arguments);
},
// 参数: flag - true时强制更新位置
initPosition : function(flag) {
if (true !== flag && this.hidden) { // 不可见时,不调整坐标
return false;
}
var doc = document, bd = (doc.body || doc.documentElement);
// ext取可视范围宽高(与上面方法取的值相同), 加上滚动坐标
var left = bd.scrollLeft + document.body.clientWidth - 5 - this.width;
var top = bd.scrollTop + document.body.clientHeight - 5 - this.height;
this.setPosition(left, top);
},
showTips : function() {
var self = this;
if (!self.hidden) {
return false;
}
self.initPosition(true); // 初始化坐标
},
hideTips : function() {
var self = this;
if (self.hidden) {
return false;
}
},
MsgInfo : function() {
var store = Ext.create('Ext.data.Store', {// 定义数据源
autoLoad : true,
fields : [ 'pkid', 'sqname', 'msgtitle',"msgId","sqId"],
proxy : {
type : 'ajax',
url : 'query/getTipsWinInfo.do?userType='+userType, // 请求的服务器地址
reader : {
type : 'json',
root : 'data'
}
},
listeners : {
load : function(store) {
if(store.data.length>0){
}
}
}
});
var grid = Ext.create('Ext.grid.Panel', {
columns : [ {
text : "消息标题",
flex : 3,
align : 'center',
sortable : false,
dataIndex : 'msgtitle'
}, {
text : "来自查看",
flex : 1,
align : 'center',
sortable : false,
dataIndex : 'sqname'
}
],
border : false,
store : store,
columnLines : true,
frame : true,
header : false,
iconCls : 'icon-grid',
listeners:{
itemclick:function(view,record, item, index, e){
var msgId=record.get('msgId');//源消息
var win = Ext.create("person.view.message.mesWin",{
title:'您有新消息',
iconCls :"bik",
id:'shequ_msg_1',
animateTarget:Ext.getBody(),
modal:true,
closable: false ,
url:"message/getMessageList.do",
messid:msgId,
tools:[{
type:'close',
id:'closableid',
hidden :false,
qtip: '关闭窗口',
handler: function(event, toolEl, panel){
Ext.Ajax.request({
url : 'message/UpdateMsgInfo.do',
method : 'POST',
params: {
messid:msgId,//消息ID
userType:userType,
msgid_shequid:""
},
success : function(response){
var messid = response.responseText;
if(messid==1){
win.close();
}
}
});
win.close();
}
}
]
}).show();
}
}
});
this.add(grid);
}
});