ExtJS Grid tooltip的几种实现方式

标签:
代码单元格微软雅黑复制成功率it |
分类: ExtJS |
1.表头提示
在2.2里面是设置ColumnModel.tooltip ,3.0则是Column. tooltip 如下:
- var
newgrid = Ext.grid.GridPanel({ -
columns:[ -
'名称',dataIndex:'name',tooltip:'对象名称'},{header: -
'开始时间{header: ,- 结束时间 <br/>成功/失败/成功率' 'sucRate',tooltip:'成功/失败/成功率'}dataIndex: -
] -
});
2.单元格提示
1)使用Ext.QuickTips
在开始的时候就执行Ext.QuickTips.init();
然后对需要提示的单元格,重写renderer函数,添加ext:qtitle , ext:qtip这2个属性即可。
这个在官方的FAQ上有详细描述: http://extjs.com/learn/Ext_FAQ_Grid#Add_ToolTip_or_Qtip
代码:
- //option
1 - //========
-
renderer
function= (data, metadata, record, rowIndex, columnIndex, store) { -
//buildthe qtip: -
var 'Detailstitle = for ' '-'+ value + 'month')+ record.get( + -
'-' 'year');+ record.get( -
var 'sunday_events');tip = record.get( -
-
'ext:qtitle="'metadata.attr = '"'+ title + '+ ext:qtip="' '"';+ tip + -
-
//returnthe display text: -
var '<spandisplayText = style="color: #000;">' '</span><br+ value + />' + -
'sunday_events_short');record.get( -
returndisplayText; - };
-
- //option
2 - //========
-
renderer
function= (data, metadata, record, rowIndex, columnIndex, store) { -
var '>';qtip = -
if(data>= 0){ -
"qtip = ;qtip='yeah'/>" -
return '<spanstyle="color:green;"' '%</span>';+ qtip + data + -
else} if(data< 0){ -
"qtip = ;qtip='woops'/>" -
return '<spanstyle="color:red;"' '%</span>';+ qtip + data + -
} -
returndata; - };
-
- //option
3 - //========
- var
newqtipTpl = Ext.XTemplate( -
'<h3>Phones:</h3>', -
'<tpl ,for=".">' -
'<div><i>{phoneType}:</i> ,{phoneNumber}</div>' -
'</tpl>' - );
-
-
renderer
function= (data, metadata, record, rowIndex, columnIndex, store) { -
-
//get data -
vardata = record.data; -
-
//convert phones to array (only once) -
data.phones = Ext.isArray(data.phones) ? -
data.phones : -
this.getPhones(data.phones); -
-
//create tooltip -
varqtip = qtipTpl.apply(data.phones); -
-
'ext:qtitle="'metadata.attr = '"'+ title + '+ ext:qtip="' '"';+ tip + -
-
//returnthe display text: -
returndata; -
};
2)使用ToolTip
官方也已经给出方法:
http://extjs.com/forum/showthread.php?p=112125#post112125
http://extjs.com/forum/showthread.php?t=55690
以上给出的方法是可以让一个grid里面的元素共享一个tooltip对象。一般用来做rowtip
不过3.0有更好的方式,如下:
3.行提示 RowTip
ExtJS3.0新增的方法,设置tooltip的delegate
代码:
- var
newmyGrid = Ext.grid.gridPanel(gridConfig); - myGrid.on('render',
function(grid){ -
var //store = grid.getStore(); Capture the Store. -
-
var //view = grid.getView(); Capture the GridView. -
-
newmyGrid.tip = Ext.ToolTip({ -
//target: view.mainBody, The overall target element. -
-
'.x-grid3-row',delegate: //Each grid row causes its own seperate show and hide. -
-
true,trackMouse: //Moving within the row should not hide the tip. -
-
//renderTo: document.body, Render immediately so that tip.body can be referenced prior to the first show. -
-
//listeners: { Change content dynamically depending on which element triggered the show. -
-
functionbeforeshow: updateTipBody(tip) { -
varrowIndex = view.findRowIndex(tip.triggerElement); -
"Overtip.body.dom.innerHTML = Record ID " + store.getAt(rowIndex).id; -
} -
} -
}); -
});
4.其他方法
监听GridView或Store的事件,然后通过rowSelector或getRow方法来遍历,自己加tooltip...
这个方式请无视吧
,renderer:function
(data, metadata, record, rowIndex, columnIndex, store) {