如图有多个连接,javascript
{ 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判断点击的是哪个连接,代码以下:html
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; } } } }
这样就根据判断点击的是哪个超连接了,下面是整个页面的源码:java
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(); } });