2017-02-20 41 views
0

Я использую этот код, чтобы показать пользовательскую подсказку в каждой строке сетки. Проблема в том, что я должен показывать это только на некоторых столбцах. Как я могу получить cellIndex в событии beforeshow? Я попытался с tipp.triggerElement.cellIndex и tipp.anchorElement.cellIndex, но я получаю неопределенныйextjs tooltip get cell index

var tip = Ext.create('Ext.tip.ToolTip', { 
    // The overall target element. 
    target: grid.el, 
    // Each grid row causes its own separate show and hide. 
    delegate: grid.view.cellSelector, 
    // Moving within the row should not hide the tip. 
    trackMouse: true, 
    // Render immediately so that tip.body can be referenced prior to the first show. 
    renderTo: Ext.getBody(), 
    listeners: { 
     // Change content dynamically depending on which element triggered the show. 
     beforeshow: function updateTipBody(tipp) {    
     } 
    } 

});

ответ

2

Сначала положите конфигурацию на свою сетку selType: 'cellmodel',, сделав это, вы можете получить текущее положение выбранной ячейки, используя приведенный ниже код.

grid.getSelectionModel().getCurrentPosition();

, который Retruns текущей строки и столбца детали и некоторые другие детали, так что вам нужно получить доступ к этой информации в случае перед шоу острия и вы возвращаетесь ложь вам не нужно, чтобы показать это.

+0

я неопределенный, пожалуйста, вы можете связать меня, где вы нашли метод getCurrentPosition? Я не могу найти его в [docs] (http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.selection.Model) – andyts93

+1

http://docs.sencha.com/ ExtJS/4.2.2/#!/апи/Ext.selection.CellModel-метод-getCurrentPosition. если он Ext js 5 или выше пойти с методом getPosition –

2

Попробуйте это:

Ext.create('Ext.grid.Panel', { 
    listeners:{ 
     render:function(grid) { 
      var view=grid.getView(); 
      view.tip = Ext.create('Ext.tip.ToolTip', { 
       target: grid.el, 
       // this gets css query to identify the individual cells 
       delegate: view.cellSelector, 
       listeners: { 
        beforeshow: function(tip) { 
         var column = view.getGridColumns()[tip.triggerElement.cellIndex]; 
         var record = view.getRecord(tip.triggerElement.parentNode); 
         tip.update(record.get(column.dataIndex)); 
        } 
       } 
      }); 
     } 
    } 
); 
+0

Я уже пробовал, но я получаю, что tip.triggerElement.cellIndex не определено – andyts93

+0

Хорошо, мне пришлось добавить 'selType: 'cellmodel''to grid, и теперь это работает , Спасибо вам и @ surya-prakash-tumma – andyts93

0

Когда я хочу (OnMouseOver) для отображения в подсказке содержимое ячейки/столбца (например, содержание больше, чем ширина ячейки) Я использую следующий метод визуализации, который вы Mabe может адаптироваться к вашему делу со значением вы хотите:

renderer: function (value, metaData, record, rowIndex, colIndex, store, view) { 
      metaData.tdAttr = 'data-qtip= "' + value + '" data-qclass="tipCls" '; 
      return value; 
} 

отлично работает в моих случаях и просто.

Взгляните: https://www.sencha.com/forum/showthread.php?179016-Grid-cell-tooltip

+0

Я пробовал, но моя подсказка html отформатирована [как это] (http://i.imgur.com/gZPElqc.jpg), и я не смог получить то же самое результат с функцией рендеринга. Я думаю, что он не принимает теги html и css в атрибуте data-qtip – andyts93

+0

Взгляните сначала на подсказку: http://examples.sencha.com/extjs/5.1.0/examples/qtips/qtips.html – josei

+0

И это (меч-это ответ, копия кода для скрипки): https://www.sencha.com/forum/showthread.php?226358-How-to-add-a-template-to-tooltip – josei