add tooltip to extjs grid to show complete information about that row

前端 未结 5 1954
予麋鹿
予麋鹿 2021-01-17 18:26

I had a gridview, it attached with a model that have some fields. But in my grid i just show one field, and what i want is when my mouse hover to the grid row,

相关标签:
5条回答
  • 2021-01-17 18:45

    you can use below example from sencha documents

    http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.tip.ToolTip

    var store = Ext.create('Ext.data.ArrayStore', {
        fields: ['company', 'price', 'change'],
        data: [
            ['3m Co',                               71.72, 0.02],
            ['Alcoa Inc',                           29.01, 0.42],
            ['Altria Group Inc',                    83.81, 0.28],
            ['American Express Company',            52.55, 0.01],
            ['American International Group, Inc.',  64.13, 0.31],
            ['AT&T Inc.',                           31.61, -0.48]
        ]
    });
    
    var grid = Ext.create('Ext.grid.Panel', {
        title: 'Array Grid',
        store: store,
        columns: [
            {text: 'Company', flex: 1, dataIndex: 'company'},
            {text: 'Price', width: 75, dataIndex: 'price'},
            {text: 'Change', width: 75, dataIndex: 'change'}
        ],
        height: 200,
        width: 400,
        renderTo: Ext.getBody()
    });
    
    var view = grid.getView();
    var tip = Ext.create('Ext.tip.ToolTip', {
        // The overall target element.
        target: view.el,
        // Each grid row causes its own separate show and hide.
        delegate: view.itemSelector,
        // 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(tip) {
                tip.update('Over company "' + view.getRecord(tip.triggerElement).get('company') + '"');
            }
        }
    });
    
    0 讨论(0)
  • 2021-01-17 18:55

    Use your columns renderer function as follows:

    {
                    id       :'data',
                    header   : 'Data', 
                    width    : 160, 
                    sortable : true, 
                    dataIndex: 'data',
                    renderer : function(value, metadata,record) {
                        return setTooltip(value, metadata,record);
                    }
                }
    
    
        function setTooltip(value, metaData, record){
            var deviceDetail = record.get('data') + ": " + record.get('description');
            metaData.attr='ext:qtip="' + deviceDetail + '"';
            console.log("deviceDetail: " + deviceDetail);
            return value;
        }
    
    0 讨论(0)
  • 2021-01-17 18:56

    The simplest way:

    When you declare the column use the property attribute:

    { 
      field: "nameField",
      width: "150px",
      title: "My Field",
      attributes: { title: "#=data.nameField#" }
    }
    
    0 讨论(0)
  • 2021-01-17 18:57

    I used in renderer:

    function(value,metadata,record){
        metadata.attr = 'ext:qtip="' + val + '"';
    }
    
    0 讨论(0)
  • 2021-01-17 19:00

    Use renderer in grid columns config. write an function which will return the expected value to that renderer function mapping.

    Sample working example:

    columns: [{
               text     : 'Device Name'
               ,dataIndex: 'name'
               ,renderer : function(value, metadata,record) {
                                        return getExpandableImage(value, metadata,record);
                        }
               }]
    
    
    
    function getExpandableImage(value, metaData,record){
        var deviceDetail = record.get('deviceName') + " " + record.get('description');
        metaData.tdAttr = 'data-qtip="' + deviceDetail + '"';
        return value;
    }
    

    This is the place (metaData.tdAttr = 'data-qtip="' + deviceDetail + '"';) where you need to show data in tooltip

    0 讨论(0)
提交回复
热议问题