(обратите внимание, исправить как ExtJS 3.3.1)
Прежде всего, это мой быстрый и грязный хак.По совпадению мой CheckboxSelectionModel
расширен в моей системе: -
Kore.ux.grid.CheckboxSelectionModel = Ext.extend(Ext.grid.CheckboxSelectionModel, {
clearSelections : function(fast){
if(this.isLocked()){
return;
}
if(fast !== true){
var ds = this.grid.store,
s = this.selections;
s.each(function(r){
//Hack, ds.indexOfId(r.id) is not correct.
//Inherited problem from Store.reader.realize function
this.deselectRow(ds.indexOf(r));
//this.deselectRow(ds.indexOfId(r.id));
}, this);
s.clear();
}else{
this.selections.clear();
}
this.last = false;
}
});
И это то место, где clearSelections
терпит неудачу.Они пытаются отменить выбор строк, используя ds.indexOfId(r.id)
, и он вернет -1
, потому что у нас нет определенного индекса remapped
.
И вот почему мы не можем найти идентификатор: -
http://imageshack.us/photo/my-images/864/ssstore.gif/
Обратите внимание, что первый элемент на изображении неправильно "переназначен".Это связано с тем, что у нас есть проблема в функции «reMap» в нашей Ext.data.Store
, которая читается следующим образом: -
// remap record ids in MixedCollection after records have been realized. @see Store#onCreateRecords, @see DataReader#realize
reMap : function(record) {
if (Ext.isArray(record)) {
for (var i = 0, len = record.length; i < len; i++) {
this.reMap(record[i]);
}
} else {
delete this.data.map[record._phid];
this.data.map[record.id] = record;
var index = this.data.keys.indexOf(record._phid);
this.data.keys.splice(index, 1, record.id);
delete record._phid;
}
}
По-видимому, этот метод не срабатывает (или не работает).Прослеженный далее, этот метод вызывается Ext.data.Store.onCreateRecords
....
this.reader.realize(rs, data);
this.reMap(rs);
....
Он выглядит хорошо с первого взгляда, но когда я отслеживаю rs
и data
, эти данные магически устанавливаются в неопределенные после this.reader.realize
функция, и, следовательно, reMap
не удалось сопоставить фантомную запись с нормальной записью.
Я не знаю, что не так с этой функцией, и я не знаю, как мне перезаписать этофункция в моем JsonReader
. Если кто-то из вас окажется свободным, помогите нам отследить виновника, который вызывает эту проблему
Приветствия
Лайонел