extjs工具提示获取单元格索引

时间:2017-02-20 13:35:12

标签: extjs grid tooltip

我正在使用此代码在网格的每一行上显示自定义工具提示。问题是我必须只在某些列上显示它。如何在beforeshow事件中检索cellIndex? 我试过tipp.triggerElement.cellIndex和tipp.anchorElement.cellIndex,但是我得到了未定义的

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) {            
      }
  }

});

3 个答案:

答案 0 :(得分:3)

试试这个:

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));
                    }
                }
            });
        }
    }
);

答案 1 :(得分:2)

首先在您的网格selType: 'cellmodel',上放置一个配置,通过这样做,您可以使用以下代码获取所选单元格的当前位置。

grid.getSelectionModel().getCurrentPosition();

它将重新打开当前的行和列详细信息以及其他一些细节,因此您需要在show show event of tip之前访问此数据,并返回false,您无需显示它。

答案 2 :(得分:0)

当我想(onmouseover)在工具提示中显示单元格/列的内容(例如,内容长于单元格的宽度)时,我使用以下渲染器方法,您可以适应您的情况用你想要的价值:

{"error": {"message": "(#100) The specified scheduled publish time is invalid.",
"type": "OAuthException",
"code": 100,
"fbtrace_id": "HcuHy8cusGC"}}

在我的案例中工作得很好而且很简单。

看看:https://www.sencha.com/forum/showthread.php?179016-Grid-cell-tooltip