如图有多个链接,
{
text: '探头维度配置',
dataIndex: 'probeId',
cls: 'ux-grid-header',
align: 'center',
width: 125,
renderer: function (val) {
return '<a href="javascript:void(0);" type="probes" >详情</a>';
}
}, {
text: '日志',
cls: 'ux-grid-header',
align: 'center',
width: 240,
renderer: function (val) {
return '<a href="javascript:void(0);" type="errorLogs" >error.log,</a><a href="javascript:void(0);" type="warnLogs" >warn.log,</a><a href="javascript:void(0);" type="infoLogs" >info.log</a>';
}
以上面代码为例,在renderer的时候可以在链接中自定义一个属性“type”,这样就可以通过grid单元格的点击事件监听,然后通过type判断点击的是哪一个链接,代码如下:
listeners: {
//这是单击grid单元格时,触发的事件
'cellclick': function (grid, td, cellIndex, record, tr, rowIndex, e, eOpts) {
//定义一个函数,等下请求日志是同一个服务器的路径,只是类型不同。
function fn(data, logsType) {
if (1 != status) {
Ext.MessageBox.alert('提示', "该引擎未启动");
return;
}
var params = {};
params['id'] = data.id;
params['logsType'] = logsType;
// 发起请求时出现遮罩层
var myMask = new Ext.LoadMask(Ext.getBody(), {
msg: "请等待..."
});
myMask.show();
Ext.Ajax.request({
url: 'engine/logs',
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
params: params,
method: 'GET',
success: function (response, options) {
var result = Ext.JSON.decode(response.responseText);
if (!result.success) {
Ext.MessageBox.alert('出错提示', result.error);
} else {
// var jsonData=JSON.parse(JSON.stringify(result.data));
Ext.create('Ext.Window', {
title: '日志',
height: 400,
width: 700,
layout: 'fit',
items: {
xtype: 'panel',
autoScroll: true,
// value: result.data,
html: result.data,
readOnly: true
}
}).show();
}
myMask.hide();
},
failure: function (response, options) {
if (!response.success) {
Ext.MessageBox.alert('出错提示', response.error);
} else {
Ext.MessageBox.alert('运行错误', response.responseText);
}
myMask.hide();
}
});
}
var me = this;
var data = record.data;
var status = data.status;
if (e.target.nodeName == 'A') {
var type = e.target.type;
switch (type) {
case 'rule':
if (1 != status) {
Ext.MessageBox.alert('提示', "该引擎未启动");
return;
}
Ext.Ajax.request({
url: 'engine/engineRules',
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
jsonData: data,
method: 'POST',
success: function (response, options) {
var result = Ext.JSON.decode(response.responseText);
if (!result.success) {
Ext.MessageBox.alert('出错提示', result.error);
} else {
// var jsonData=JSON.parse(JSON.stringify(result.data));
Ext.create('Ext.Window', {
title: '引擎订阅规则',
height: 400,
width: 700,
layout: 'fit',
items: {
xtype: 'textarea',
value: result.data,
readOnly: true
}
}).show();
}
},
failure: function (response, options) {
if (!response.success) {
Ext.MessageBox.alert('出错提示', response.error);
} else {
Ext.MessageBox.alert('运行错误', response.responseText);
}
}
});
break;
case 'probes' :
var ids = data.probeId;
var probesWin = Ext.widget('probesWindow');
var probeStore = probesWin.down('grid').getStore();
probeStore.getProxy().extraParams = {'ids': ids};
probeStore.loadPage(1);
probesWin.show();
break;
case 'errorLogs':
fn(data, 'errorLogs');
break;
case 'infoLogs':
fn(data, 'infoLogs');
break;
case 'warnLogs':
fn(data, 'warnLogs');
break;
default:
return;
}
}
}
}
这样就根据判断点击的是哪一个超链接了,下面是整个页面的源码:
if (1 != status) {
Ext.MessageBox.alert('提示', "该引擎未启动");
return;
}
var params = {};
params['id'] = data.id;
params['logsType'] = logsType;
// 发起请求时出现遮罩层
var myMask = new Ext.LoadMask(Ext.getBody(), {
msg: "请等待..."
});
myMask.show();
Ext.Ajax.request({
url: 'engine/logs',
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
params: params,
method: 'GET',
success: function (response, options) {
var result = Ext.JSON.decode(response.responseText);
if (!result.success) {
Ext.MessageBox.alert('出错提示', result.error);
} else {
// var jsonData=JSON.parse(JSON.stringify(result.data));
Ext.create('Ext.Window', {
title: '日志',
height: 400,
width: 700,
layout: 'fit',
items: {
xtype: 'panel',
autoScroll: true,
// value: result.data,
html: result.data,
readOnly: true
}
}).show();
}
myMask.hide();
},
failure: function (response, options) {
if (!response.success) {
Ext.MessageBox.alert('出错提示', response.error);
} else {
Ext.MessageBox.alert('运行错误', response.responseText);
}
myMask.hide();
}
});