Как определить вид в Ext.grid.panel

Я хочу изменить вид сетки, и я начал с базы (т.е. до того, как определил свой собственный вид). Но почему-то я даже не могу назначить объект для свойства просмотра. Пожалуйста, кто-нибудь знает, как создать представление ?? Я пробовал след.

Пример был бы отличным.

var viewConfig = {emptyText: "My msg",stripeRows: false};

this.grid = Ext.create('Ext.grid.Panel', {
            id: "t-"+this.gridName+"-grid",
            header: true,
            title: gridTitle,
            border: false,
            store: store,            
            columns: cm,
            selModel: sm,
            loadMask: true,
            //viewConfig: viewConfig, // works fine
            //view: new Ext.view.Table() ,//Ext.grid.View(),//Ext.grid.View(viewConfig ),
            provider: this.page.provider
        });

Если я раскомментирую строку «view: new Ext.view.Table()», тогда возникнет ошибка и все остановится. Я продолжаю комментировать, и после создания сетки я могу получить доступ к представлению с помощью свойства this.grid.getView(). Но как создать собственный объект просмотра (где я могу назначать пользовательские шаблоны)???

Большое спасибо.


person user2135671    schedule 22.03.2013    source источник
comment
В чем твоя проблема? Чтобы настроить представление, используйте viewConfig, как вы все еще упоминаете.   -  person    schedule 22.03.2013
comment
ViewConfig работает нормально, но я хочу определить свое собственное представление. Но если я декомментирую view: new Ext.view.Table(), возникает ошибка, что me.selModel не определен. Как создать объект Ext.view.Table() и назначить свойство просмотра?? this.grid = Ext.create('Ext.grid.Panel', { id: t-+this.gridName+-grid, header: true, title: gridTitle, border: false, store: store, columns: cm, selModel: sm, loadMask: true, view: new Ext.view.Table(), provider: this.page.provider });   -  person user2135671    schedule 22.03.2013


Ответы (1)


Из документов:

Это базовый класс как для Ext.grid.View, так и для Ext.tree.View, и его нельзя использовать напрямую.

Если вы хотите создать его самостоятельно, вам необходимо настроить следующие обязательные параметры.

itemSelector : String
store : Ext.data.Store
tpl : String/String[]

Посмотрите в документации, как создайте свой собственный вид. Удачи! Если вам нужна помощь, не стесняйтесь спрашивать ;)

Ext.define('Image', {
    extend: 'Ext.data.Model',
    fields: [
        { name:'src', type:'string' },
        { name:'caption', type:'string' }
    ]
});

Ext.create('Ext.data.Store', {
    id:'imagesStore',
    model: 'Image',
    data: [
        { src:'http://www.sencha.com/img/20110215-feat-drawing.png', caption:'Drawing & Charts' },
        { src:'http://www.sencha.com/img/20110215-feat-data.png', caption:'Advanced Data' },
        { src:'http://www.sencha.com/img/20110215-feat-html5.png', caption:'Overhauled Theme' },
        { src:'http://www.sencha.com/img/20110215-feat-perf.png', caption:'Performance Tuned' }
    ]
});

var imageTpl = new Ext.XTemplate(
    '<tpl for=".">',
        '<div style="margin-bottom: 10px;" class="thumb-wrap">',
          '<img src="{src}" />',
          '<br/><span>{caption}</span>',
        '</div>',
    '</tpl>'
);

var theView = Ext.create('Ext.view.View', {
    store: Ext.data.StoreManager.lookup('imagesStore'),
    tpl: imageTpl,
    itemSelector: 'div.thumb-wrap',
    emptyText: 'No images available'
});

var grid = Ext.create('Ext.grid.Panel', {
    id: "t-"+this.gridName+"-grid",
    header: true,
    title: gridTitle,
    border: false,
    store: store,            
    columns: cm,
    selModel: sm,
    loadMask: true,
    view: theView,
    provider: this.page.provider,
    renderTo: Ext.getBody()
});
//not tested but should work
person A1rPun    schedule 22.03.2013
comment
прежде всего я попробовал с Ext.grid.View(), а также поместил store:store,itemSelector:'tr.grid-row',tpl:'‹div›{title}‹/div›', но это даже не работает . (store — это объект назначения переменной ext.data.Jsonstore()), я попробовал tpl: new Ext.Template(‹div›Hello {0}.‹/div›); Но ничего не работает. Знаете ли вы какую-либо ссылку в Интернете, на которую можно сослаться ?? - person user2135671; 22.03.2013
comment
а также поставить store:store,itemSelector:'tr.grid-row',tpl:'‹div›{title}‹/div›', но даже это не работает. где store - это объект назначения переменной ext.data.Jsonstore()), и я попробовал tpl: new Ext.Template(‹div›Hello {0}.‹/div›); Но ничего не работает. Знаете ли вы какую-либо ссылку в Интернете, на которую можно сослаться ?? - person user2135671; 22.03.2013
comment
Привет! Большое спасибо за пример и ссылку, я попробовал следующий пример, но это не работает. Это вызывает следующую ошибку в extjs 4 API Live Preview TypeError: Невозможно установить свойство «представление» неопределенного. Пожалуйста, обратитесь к этой ссылке jsfiddle.net/3hAsM/2, так как я не могу публиковать. - person user2135671; 22.03.2013