【发布时间】:2013-10-03 22:29:06
【问题描述】:
早上好!
我有一个grid,只需单击一个按钮即可更改商店。
我如何获取我的网格的当前store,无论加载的是哪一个?
【问题讨论】:
-
当前店铺为好友当前加载的店铺。
-
没关系,我没看懂这句话'无论加载哪个'。
标签: javascript extjs store
早上好!
我有一个grid,只需单击一个按钮即可更改商店。
我如何获取我的网格的当前store,无论加载的是哪一个?
【问题讨论】:
标签: javascript extjs store
通常grid.getStore() 会为您提供附加到您的网格的商店
【讨论】:
grid var 是一个实例,所以通常在你pagingToolbar 中你可以访问grid 并能够调用grid.getStore().load(),不是吗?如果您可以添加代码或jsfiddle,可能会更酷
bindStore 方法。您可以通过覆盖网格本身的 bindStore 方法来自动执行此逻辑。
如何获取网格的当前存储?
---> 您可以使用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);
【讨论】: