【发布时间】:2013-12-09 10:54:07
【问题描述】:
我有一个 ExtJS 4 dataView,我想获取所选节点的 id。
我是第一次使用dataView,所以有些麻烦。
商店已正确加载,我很好地看到了视图中的数据。我遇到的问题涉及更新和删除的“经典”操作,特别是获取所选项目的 id。 例如进入一个网格,我单击,然后选择一条记录,然后通过按下按钮打开一个带有加载表单的窗口(或其他操作)(通过将 AJAX 发送到商店,选定行的 id)并更新数据。
我仍然无法使用 ExtJS 4 数据视图。
在我的数据视图下方:
dataView_player = Ext.create('Ext.Panel', {
id: 'images-view',
frame: true,
collapsible: false,
autoWidth: true,
title: 'Giocatori (0 items selected)',
items: [ Ext.create('Ext.view.View', {
id:'players-view',
store: store_player,
multiSelect: true,
height: 310,
trackOver: true,
overItemCls: 'x-item-over',
itemSelector: 'div.thumb-wrap',
emptyText: 'Nessun giocatore visualizzato',
tpl: [
'<tpl for=".">',
'<div class="thumb-wrap" id="{id}-{name}">',
'<div class="thumb">',
'<img src="/img/players/{picture}" title="{name} {surname}" alt="{name} {surname}" style="">',
'</div>',
'<span class="" style="height:30px;">{general_description}{name} {surname}</span>',
'</div>',
'</tpl>',
'<div class="x-clear"></div>'
],
plugins: [
Ext.create('Ext.ux.DataView.DragSelector', {}),
Ext.create('Ext.ux.DataView.LabelEditor', {dataIndex: 'name'})
],
prepareData: function(data) {
Ext.apply(data, {
name: data.name,
surname: data.surname,
general_description: Ext.util.Format.ellipsis(data.general_description, 15)
});
return data;
},
listeners: {
'selectionchange': function(record, item, index, e) {
var node = this.getNode(record); //this.getNode(record);
console.log(node.get('id'));
}
}
}) ],
dockedItems: [{
xtype: 'toolbar',
items: [{
iconCls: 'delete',
text: 'Cancella Selezionati',
scale: 'medium',
tooltip: 'Per <b>cancellare</b> i giocatori selezionati',
tooltipType: 'qtip',
id: 'delete-player',
disabled: true,
handler: delete_news
}, '-', {
iconCls: 'edit',
text: 'Aggiorna Selezionata',
scale: 'medium',
tooltip: 'Per <b>aggiornare</b> un giocatore selezionato',
tooltipType: 'qtip',
disabled: false,
id: 'update-player',
handler: function(nodes) {
var l = nodes.get('id');
console.log(l);
}
}
}
]
}]
});
当然,这是一个错误的例子(因为监听器不起作用),但这只是为了提出一个想法。 我想做的主要有两件事:
1) 在“selectionchange”操作上捕获所选项目的 id(和其他商店的字段)。显然,由于这个原因,现在它不起作用:node.get('id')。当然这是一个错误的语法,但我的意志是我的想法。
2) 在“update-player”按钮的处理程序事件上捕获所选项目的 id。如上所述,问题是nodes.get('id')。更麻烦的是,如何传递选中项的特征。在handler: function(nodes) { 中,节点变量不假定任何值,我不知道如何将参数从数据视图传递给处理函数。
希望有人能帮助我。
【问题讨论】:
标签: ajax extjs extjs4 extjs4.2 extjs-mvc