2012-07-03 3 views
1

Вот моя проблема: в моем приложении у меня есть Dojo EnhancedGrid, созданный с помощью ItemFileReadStore. Поток страниц выглядит так:Dojo EnhancedGrid и программный выбор

  1. Пользователь выбирает значение из списка выбора.
  2. Элемент из списка размещен на сервере, а затем сетка обновляется данными с сервера (не спрашивайте, почему, так оно должно работать)
  3. Новый элемент подсвечивается в сетке ,

Теперь первые два шага работают как шарм; однако третий шаг дал мне некоторые головные боли. После того как данные успешно размещены на сервере (через 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.

Любые мысли об этом?

Большое спасибо.

ответ

0

Вы должны использовать setSelected(), как и

exportMappingGrid.selection.setSelected(newItemIndex, true); 

Второй параметр верно выбрать строку, ложный, чтобы отменить его.

+0

Я использовал setSelected и это, казалось, прекрасно работать, пока я не столкнулся с какой-то неприятности: если выбрать строку в сетке (нажав мышь), затем добавьте еще одну строку и выберите ее программно. Я получаю две выбранные строки. –

+0

В подобном сценарии я обнаружил, что мне нужно было сделать setSelected (xxx, false), чтобы отменить выбор старой строки перед программным выбором новой строки. –

0

Это то, что работает для меня:

grid.selection.clear(); 
grid.selection.addToSelection(newItemIndex); 
grid.selection.getFirstSelected(); 

Jon

+0

, но это также работает: grid.selection.clear(); grid.selection.setВыбран (newItemIndex, true); –