ExtJS - 网格单元工具提示

问题描述 投票:0回答:1

我正在尝试为单元格创建一个工具提示。下面的代码做到了这一点,但工具提示仅出现在单击时(在 mozilla 中),而在 IE 中,工具提示出现在 mouseOver 上,但显示最后单击的单元格的值。

我想要鼠标悬停时网格上的工具提示,其中单元格内容作为工具提示显示值。

请建议任何其他方法来实现这一目标。预先感谢。

var grid = Ext.getCmp('your_grid_id');   // Enter your grid id
initToolTip(grid); // call function

initToolTip: function(grid) {
var view = grid.view;

// record the current cellIndex
grid.mon(view, {
    uievent: function(type, view, cell, recordIndex, cellIndex, e) {
        grid.cellIndex = cellIndex;
        grid.recordIndex = recordIndex;
    }
});

grid.tip = Ext.create('Ext.tip.ToolTip', {
    target: view.el,
    delegate: '.x-grid-cell',
    trackMouse: true,
    renderTo: Ext.getBody(),
    listeners: {
        beforeshow: function updateTipBody(tip) {
            if (!Ext.isEmpty(grid.cellIndex) && grid.cellIndex !== -1) {
                header = grid.headerCt.getGridColumns()[grid.cellIndex];
                columnText = grid.getStore().getAt(grid.recordIndex).get(header.dataIndex);

                tip.update(columnText);
            }
        }
    }
});
extjs grid tooltip cell onmouseover
1个回答
0
投票

您可以使用

renderer
配置
gridcolumn
并在
renderer
内部,您可以根据您需要显示的记录返回 html 标签
data-qtip

您可以在此处检查工作Fiddle

代码:

Ext.application({
    name: 'Fiddle',

    launch: function () {
        Ext.create('Ext.data.Store', {

            storeId: 'simpsonsStore',

            fields: ['name', 'email', 'phone'],
            data: [{
                'name': 'Lisa',
                "email": "[email protected]",
                "phone": "555-111-1224"
            }, {
                'name': 'Bart',
                "email": "[email protected]",
                "phone": "555-222-1234"
            }, {
                'name': 'Homer',
                "email": "[email protected]",
                "phone": "555-222-1244"
            }, {
                'name': 'Marge',
                "email": "[email protected]",
                "phone": "555-222-1254"
            }]
        });

        Ext.create('Ext.grid.Panel', {

            title: 'Simpsons',

            store: 'simpsonsStore',

            columns: [{
                text: 'Name',
                dataIndex: 'name',
                renderer: function (value, metaData, record, rowIndex, colIndex, store) {
                    return `<span data-qtip="This is ${value}"> ${value} </span>`;
                }
            }, {
                text: 'Email',
                dataIndex: 'email',
                flex: 1
            }, {
                text: 'Phone',
                dataIndex: 'phone'
            }],

            height: 200,

            renderTo: Ext.getBody()
        });
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.