ExtJS-网格单元工具提示

时间:2018-10-06 13:00:35

标签: extjs grid tooltip cell onmouseover

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

我希望在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);
            }
        }
    }
});

1 个答案:

答案 0 :(得分:0)

您可以对renderer使用gridcolumn配置,并且在renderer的内部,您可以根据需要显示的记录data-qtip返回一个html标签。 / p>

您可以在这里使用 FIDDLE 进行检查。

代码片段

Ext.application({
    name: 'Fiddle',

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

            storeId: 'simpsonsStore',

            fields: ['name', 'email', 'phone'],
            data: [{
                'name': 'Lisa',
                "email": "lisa@simpsons.com",
                "phone": "555-111-1224"
            }, {
                'name': 'Bart',
                "email": "bart@simpsons.com",
                "phone": "555-222-1234"
            }, {
                'name': 'Homer',
                "email": "homer@simpsons.com",
                "phone": "555-222-1244"
            }, {
                'name': 'Marge',
                "email": "marge@simpsons.com",
                "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()
        });
    }
});