【问题标题】:Getting the current store - Ext JS获取当前商店 - Ext JS
【发布时间】:2013-10-03 22:29:06
【问题描述】:

早上好!

我有一个grid,只需单击一个按钮即可更改商店。

我如何获取我的网格的当前store,无论加载的是哪一个?

【问题讨论】:

  • 当前店铺为好友当前加载的店铺。
  • 没关系,我没看懂这句话'无论加载哪个'。

标签: javascript extjs store


【解决方案1】:

通常grid.getStore() 会为您提供附加到您的网格的商店

【讨论】:

  • 说我有: var grid = Ext.define('MY.grid.Panel', { ... });我有一个 dockedItem: pagingToolbar。如果它是部分网格配置,我如何使用 grid.getStore() 将当前商店加载到我的 pagingToolbar 中?
  • 我不确定。 grid var 是一个实例,所以通常在你pagingToolbar 中你可以访问grid 并能够调用grid.getStore().load(),不是吗?如果您可以添加代码或jsfiddle,可能会更酷
  • @ClayBanks 问题是:首先如何交换商店?这时你也必须调用分页工具栏的bindStore 方法。您可以通过覆盖网格本身的 bindStore 方法来自动执行此逻辑。
  • @ClayBanks :您必须将相同的商店分配给网格和分页工具栏
  • 嗯,好人。我确实使用 bindstore 来切换我的网格上的商店,但是如何为 ptbar 做到这一点......
【解决方案2】:

如何获取网格的当前存储?

---> 您可以使用grid.getStore() 或直接使用grid.store 获取当前商店。

不管加载的是哪一个?

---->您将只有一个商店分配给网格,而您将分配给同一商店Paging Toolbar

这里是 sencha 的例子:

 Ext.onReady(function () {
    Ext.tip.QuickTipManager.init();
    Ext.define('ForumThread', {
        extend : 'Ext.data.Model',
        fields : ['title', 'forumtitle', 'forumid', 'username', {
                name : 'replycount',
                type : 'int'
            }, {
                name : 'lastpost',
                mapping : 'lastpost',
                type : 'date',
                dateFormat : 'timestamp'
            }, 'lastposter', 'excerpt', 'threadid'],
        idProperty : 'threadid'
    });
    // ***** create the Data Store, assign variable to grid and paging toolbar ***** 
    var store = Ext.create('Ext.data.Store', {
            pageSize : 50,
            model : 'ForumThread',
            remoteSort : true,
            proxy : {
                // load using script tags for cross domain, if the data in on the same domain as
                // this page, an HttpProxy would be better type: 'jsonp', url: 'http://www.sencha.com/forum/topics-browse-remote.php',
                reader : {
                    root : 'topics',
                    totalProperty : 'totalCount'
                },
                // sends single sort as multi parameter
                simpleSortMode : true
            },
            sorters : [{
                    property : 'lastpost',
                    direction : 'DESC'
                }
            ]
        });
    // pluggable renders function
    renderTopic(value, p, record) {
        return Ext.String.format('<b><a href="http://sencha.com/forum/showthread.php?t={2}" target="_blank">{0}</a></b><a href="http://sencha.com/forum/forumdisplay.php?f={3}" target="_blank">{1} Forum</a>', value, record.data.forumtitle, record.getId(), record.data.forumid);
    }
    function renderLast(value, p, r) {
        return Ext.String.format('{0}<br/>by {1}', Ext.Date.dateFormat(value, 'M j, Y, g:i a'), r.get('lastposter'));
    }
    var pluginExpanded = true;
    var grid = Ext.create('Ext.grid.Panel', {
            width : 700,
            height : 500,
            title : 'ExtJS.com - Browse Forums',
            // ***** above declared store assigned to grid, same will be assigned to paging toolbar
            store : store,
            disableSelection : true,
            loadMask : true,
            viewConfig : {
                id : 'gv',
                trackOver : false,
                stripeRows : false,
                plugins : [{
                        ptype : 'preview',
                        bodyField : 'excerpt',
                        expanded : true,
                        pluginId : 'preview'
                    }
                ]
            },
            id : 'topic',
            text : "Topic",
            dataIndex : 'title',
            flex : 1,
            renderer : renderTopic,
            sortable : false
        }, {
            text : "Author",
            dataIndex : 'username',
            width : 100,
            hidden : true,
            sortable : true
        }, {
            text : "Replies",
            dataIndex : 'replycount',
            width : 70,
            align : 'right',
            sortable : true
        }, {
            id : 'last',
            text : "Last Post",
            dataIndex : 'lastpost',
            width : 150,
            renderer : renderLast,
            sortable : true
        }
            ],
            // paging bar on the bottom bbar:
            Ext.create('Ext.PagingToolbar', {
                // *********  same store which is applied to the grid
                store : store,
                displayInfo : true,
                displayMsg : 'Displaying topics {0} - {1} of {2}',
                emptyMsg : "No topics to display",
                items : ['-', {
                        text : 'Show Preview',
                        pressed : pluginExpanded,
                        enableToggle : true,
                        toggleHandler : function (btn, pressed) {
                            var preview = Ext.getCmp('gv').getPlugin('preview');
                            preview.toggleExpanded(pressed);
                        }
                    }
                ]
            }), renderTo : 'topic-grid'
 });
 // trigger the data store load
 store.loadPage(1);

【讨论】:

    猜你喜欢
    • 2013-09-23
    • 2014-02-03
    • 2013-12-22
    • 1970-01-01
    • 2015-10-13
    • 2012-12-02
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    相关资源
    最近更新 更多