отображать изображение в сетке, используя extjs - PullRequest
11 голосов
/ 24 марта 2009

Я новичок в extjs. Я хочу отображать изображения иконок для каждого элемента сетки. Можете ли вы помочь мне кто-нибудь?

Я получаю путь к изображению из XML-файла.

Мой код ниже. здесь я показываю путь к изображению.

Я должен заменить его отображением изображения.

Ext.onReady(function(){

      var store = new Ext.data.Store({
        url: 'new_frm.xml',

               reader: new Ext.data.XmlReader({
               record: 'message',
               fields: [{name: 'first'},{name: 'last'},{name: 'company'},{name: 'email'},{name: 'gender'},{name: 'form-file'},{name: 'state'},{name: 'Live'},{name: 'content'}]
           })
    });

      var grid = new Ext.grid.GridPanel({
        store: store,
        columns: [
            {header: "First Name", width: 120, dataIndex: 'first', sortable: true},
            {header: "Last Name", width: 180, dataIndex: 'last', sortable: true},
            {header: "Company", width: 115, dataIndex: 'company', sortable: true},          
            {header: "Email", width: 100, dataIndex: 'email', sortable: true},
            {header: "Gender", width: 100, dataIndex: 'gender', sortable: true},
            {header: "Photo", width: 100, dataIndex: 'form-file', sortable: true},
            {header: "State", width: 100, dataIndex: 'state', sortable: true},
            {header: "Living with", width: 100, dataIndex: 'Live', sortable: true},
            {header: "Commands", width: 100, dataIndex: 'content', sortable: true}

        ],
        renderTo:'example-grid',
        height:200
    });

    store.load();
});

Ответы [ 7 ]

32 голосов
/ 13 апреля 2009

Вам нужно добавить рендер в ваши столбцы, которые вы хотите отобразить изображение. Значение рендерера - это функция, вызываемая для визуализации тега изображения.

Один из ваших элементов столбца изменен:

{header: "Photo", width: 100, renderer:renderIcon, dataIndex: 'form-file', sortable: true},

Пример функции рендеринга:

function renderIcon(val) {
    return '<img src="' + val + '">';
}

В этом примере значение dataIndex должно быть полным путем к изображению. Если нет, то вы должны добавить дополнительную логику.

4 голосов
/ 27 сентября 2012

Другой альтернативой, которая может быть принята для вашего конкретного вопроса, является настройка изображений в файле CSS, например:

.icon-red {
    background-image:  url('red.png');
    background-repeat: no-repeat;
}

.icon-green {
    background-image:  url('green.png');
    background-repeat: no-repeat;
}

Затем создайте рендер для добавления в метаданные ячейки в том виде, в котором они отображаются:

renderIcon: function(value, metadata, record, rowIndex, colIndex, store) {

    // set the icon for the cells metadata tags
    if (value > 0) {
        metadata.css = metadata.css + ' icon-green ';
    } else {
        metadata.css = metadata.css + ' icon-red ';
    }

    // add an individual qtip/tooltip over the icon with the real value
    metadata.attr = 'ext:qtip="' + (value) + '"';

    return '&nbsp;';
}
1 голос
/ 27 января 2017

Это лучший режим, примените столбец виджета и тип изображения виджета следующим образом:

columns:[
      {text:'Image', xtype:'widgetcolumn', widget:{xtype:'image', src: 'http://www.sencha.com/img/20110215-feat-html5.png'}, dataIndex:'image'}]

на extjs 6

1 голос
/ 26 марта 2009

пытается использовать атрибут "render" в объявлении столбца, в котором вы хотите отобразить изображение. Используя атрибут Render, вы можете вывести HTML по вашему выбору. Проверьте это на форумах ExtJs :) Надеюсь, что это направит вас в правильном направлении

0 голосов
/ 24 июня 2015

Простой

В своем Json передать строку с < img src = " " />

после индекса данных:

fields:[

{name: 'images', type: 'string'}

]

{

text: 'images',

dataIndex: 'images'

}
0 голосов
/ 10 января 2014

для отображения значка в вашем столбце имени выполните следующие изменения

{header: "First Name", width: 120, renderer:first, dataIndex: 'first', sortable: true},

сделать функцию как

function first(val)
{
return '<img src="' + val + '">';
}
0 голосов
/ 26 марта 2009

вы можете написать XML-файл как htmlspecialchars (""), тогда вы можете просмотреть его просто.

...