Вот моя проблема: в моем приложении у меня есть Dojo EnhancedGrid, созданный с помощью ItemFileReadStore. Поток страниц выглядит так:Dojo EnhancedGrid и программный выбор
- Пользователь выбирает значение из списка выбора.
- Элемент из списка размещен на сервере, а затем сетка обновляется данными с сервера (не спрашивайте, почему, так оно должно работать)
- Новый элемент подсвечивается в сетке ,
Теперь первые два шага работают как шарм; однако третий шаг дал мне некоторые головные боли. После того как данные успешно размещены на сервере (через dojo.xhrPost()) следующий код работает:
myGrid.store.close();
myGrid._refresh();
myGrid.store.fetch({
onComplete : function(items) {
for (var i = 0; i < items.length; i++) {
if (items[i].documentType[0].id == documentTypeId) {
var newItemIndex = myGrid.getItemIndex(items[i]);
exportMappingGrid.selection.deselectAll();
exportMappingGrid.selection.addToSelection(newItemIndex);
}
}
}
});
Теперь выбор сетки обновляется (т.е. объект выбора имеет SelectedIndex> 0), но визуально нет ответа, если я не надвигаю мышь над «выбранной» строкой. Если я удаляю строку .deselectAll() (которую я подозревал в качестве виновника), то иногда я получаю сразу два элемента, хотя значение сетки attributeMode имеет значение single.
Любые мысли об этом?
Большое спасибо.
Я использовал setSelected и это, казалось, прекрасно работать, пока я не столкнулся с какой-то неприятности: если выбрать строку в сетке (нажав мышь), затем добавьте еще одну строку и выберите ее программно. Я получаю две выбранные строки. –
В подобном сценарии я обнаружил, что мне нужно было сделать setSelected (xxx, false), чтобы отменить выбор старой строки перед программным выбором новой строки. –