我有一个简单的案例,我有一个附加商店的网格.
有2个按钮.一个带有修改所选记录的处理程序.一个具有提交所选记录的处理程序.
当我选择一个记录并推送编辑时 – >编辑发生选择(看起来丢失)如果你调用grid.geSelectionModel().getSelection()你会看到记录仍然被选中.它只是没有这样显示.
您无法再次选择它,首先必须选择另一条记录,然后选择记录.
其次,当您选择一个记录时,单击提交按钮,该值将被提交,但选择“再次显示”为丢失.
这是一个错误吗?我怎样才能解决这个问题?我想让它保持选择可见!
这是示例代码:(我使用Ext 4.1.1)
var cellEditing = Ext.create('Ext.grid.plugin.CellEditing', {
clicksToEdit: 1
});
Ext.create('Ext.data.Store', {
storeId: 'simpsonsStore',
fields: ['name', 'email', 'phone'],
data: {
'items': [{
'name': 'Lisa',
"email": "lisa@simpsons.com",
"phone": "555-111-1224"
}, {
'name': 'Bart',
"email": "bart@simpsons.com",
"phone": "555-222-1234"
}, {
'name': 'Homer',
"email": "home@simpsons.com",
"phone": "555-222-1244"
}, {
'name': 'Marge',
"email": "marge@simpsons.com",
"phone": "555-222-1254"
}]
},
proxy: {
type: 'memory',
reader: {
type: 'json',
root: 'items'
}
}
});
Ext.create('Ext.container.Container', {
layout: 'fit',
renderTo: Ext.getBody(),
items: [{
xtype: 'grid',
store: Ext.data.StoreManager.lookup('simpsonsStore'),
columns: [{
text: 'Name',
dataIndex: 'name'
}, {
text: 'Email',
dataIndex: 'email',
flex: 1
}, {
text: 'Phone',
dataIndex: 'phone'
}],
height: 200,
buttons: [{
text: 'commit selection',
handler: function(){
this.up('grid').getSelectionModel().getSelection()[0].commit();
}
},{
text: 'set selection name to maggy',
handler: function(){
this.up('grid').getSelectionModel().getSelection()[0].set('name', 'Maggy');
}
}]
}]
});
更新:
我在sencha forum报道了它.Mitchel Simoens告诉我它已经在Ext 4.1.2中修复了.太糟糕了,它是’仅支持订户’版本..
更新:
我正在找到问题来尝试修复它.我相信这个问题位于onUpdate方法的Ext.view.Table类中,更精确地围绕这段代码:
if (oldRowDom.mergeAttributes) {
oldRowDom.mergeAttributes(newRow, true);
} else {
newAttrs = newRow.attributes;
attLen = newAttrs.length;
for (i = 0; i < attLen; i++) {
attName = newAttrs[i].name;
if (attName !== 'id') {
oldRowDom.setAttribute(attName, newAttrs[i].value);
}
}
}
将这段代码留下来是不是一个坏主意?我评论它似乎现在正在工作,但它不会破坏其他功能吗? http://jsfiddle.net/Vandeplas/YZqch/10/
解决方法:
我认为这是一个错误,可能是刷新网格以显示脏位的一部分.
我以一种丑陋的方式绕过了这个,in your revised fiddle:
{
text: 'set selection name to maggy',
handler: function(){
var sel = this.up('grid').getSelectionModel();
var rec = sel.getSelection()[0];
rec.set('name', 'Maggy');
sel.deselectAll();
sel.select(rec.index);
}
}
我为.set()做了这个,但是对于commit()也可以这样做
希望这有点帮助.
原文地址:https://codeday.me/bug/20190529/1181340.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。