ExtJS Grid Tooltipの3+1種実装方式まとめ
本稿では,ExtJS Grid Tooltipのいくつかの実装方法をまとめた.ExtJS Grid Tooltipは、ヘッダーのヒント、セルのヒント、行のヒント、および自分で手動で追加することで完了します.本明細書では、公式FAQに記載されている説明を参照する.
ExtJS Grid Tooltip実装の1つ:ヘッダヒント
2.2ではColumnModelを設定します.tooltip,3.0はColumn.tooltipは次のとおりです.
ExtJS Grid Tooltip実装その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
2)Tooltipの使用
公式にも方法が示されています.
http://extjs.com/forum/showthread.php?p=112125#post112125
http://extjs.com/forum/showthread.php?t=55690
以上の方法は、1つのgrid内の要素にtooltipオブジェクトを共有させることです.一般的にrowtipに使われています
しかし3.0には、次のような方法があります.
ExtJS Grid Tooltip実装の3:行ヒントRowTip
ExtJS3.0新規メソッド、tooltipのdelegateを設定する
ExtJS Grid Tooltip実現の4:その他の方法?
GridViewまたはStoreのイベントをリスニングし、rowSelectorまたはgetRowメソッドで巡回し、自分でtooltipを追加します...この方式は無視してください
ExtJS Grid Tooltip実装の1つ:ヘッダヒント
2.2ではColumnModelを設定します.tooltip,3.0はColumn.tooltipは次のとおりです.
- var grid = new Ext.grid.GridPanel({
- columns:[
- {header:' ',dataIndex:'name',tooltip:' '},
- {header:' - < br/> / / ', dataIndex:'sucRate',tooltip:' / / '}
- ]
- });
ExtJS Grid Tooltip実装その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) {
- //build the qtip:
- var title = 'Details for ' + value + '-' + record.get('month') +
- '-' + record.get('year');
- var tip = record.get('sunday_events');
-
- metadata.attr = 'ext:qtitle="' + title + '"' + ' ext:qtip="' + tip + '"';
-
- //return the display text:
- var displayText = '< span style="color: #000;">' + value + '< /span>< br />' +
- record.get('sunday_events_short');
- return displayText;
- };
-
- //option 2
- //========
- renderer = function (data, metadata, record, rowIndex, columnIndex, store) {
- var qtip = '>';
- if(data >= 0){
- qtip = " qtip='yeah'/>";
- return '< span style="color:green;"' + qtip + data + '%< /span>';
- }else if(data < 0){
- qtip = " qtip='woops'/>";
- return '< span style="color:red;"' + qtip + data + '%< /span>';
- }
- return data;
- };
-
- //option 3
- //========
- var qtipTpl = new Ext.XTemplate(
- '< h3>Phones:< /h3>',
- '< tpl for=".">',
- '< div>< i>{phoneType}:< /i> {phoneNumber}< /div>',
- '< /tpl>'
- );
-
- renderer = function (data, metadata, record, rowIndex, columnIndex, store) {
-
- // get data
- var data = record.data;
-
- // convert phones to array (only once)
- data.phones = Ext.isArray(data.phones) ?
- data.phones :
- this.getPhones(data.phones);
-
- // create tooltip
- var qtip = qtipTpl.apply(data.phones);
-
- metadata.attr = 'ext:qtitle="' + title + '"' + ' ext:qtip="' + tip + '"';
-
- //return the display text:
- return data;
- };
2)Tooltipの使用
公式にも方法が示されています.
http://extjs.com/forum/showthread.php?p=112125#post112125
http://extjs.com/forum/showthread.php?t=55690
以上の方法は、1つのgrid内の要素にtooltipオブジェクトを共有させることです.一般的にrowtipに使われています
しかし3.0には、次のような方法があります.
ExtJS Grid Tooltip実装の3:行ヒントRowTip
ExtJS3.0新規メソッド、tooltipのdelegateを設定する
- var myGrid = new Ext.grid.gridPanel(gridConfig);
- myGrid.on('render', function(grid) {
- var store = grid.getStore(); // Capture the Store.
-
- var view = grid.getView(); // Capture the GridView.
-
- myGrid.tip = new Ext.ToolTip({
- target: view.mainBody, // The overall target element.
-
- delegate: '.x-grid3-row', // Each grid row causes its own seperate show and hide.
-
- trackMouse: true, // 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.
-
- beforeshow: function updateTipBody(tip) {
- var rowIndex = view.findRowIndex(tip.triggerElement);
- tip.body.dom.innerHTML = "Over Record ID " + store.getAt(rowIndex).id;
- }
- }
- });
- });
ExtJS Grid Tooltip実現の4:その他の方法?
GridViewまたはStoreのイベントをリスニングし、rowSelectorまたはgetRowメソッドで巡回し、自分でtooltipを追加します...この方式は無視してください