dojox.enhancedGrid Obtenha linha selecionada
-
27-09-2019 - |
Pergunta
Como posso obter o objeto de linha selecionado do dojox.epensGrid? Estou usando o SelectionMode: 'Single', por exemplo, com botões de rádio.
dijit.byId("gridViewWidget").selection.selectedIndex
Retorna o RowIndex. Mas como obter o ROWObject desse índice? Eu posso conseguir o rowNode()
Mas o que eu preciso é o valor da coluna de identificação dessa linha.
É possível travar o html dom devolvido por rowNode()
Mas há algum caminho direto?
Estou usando atualmente dijit.byId("gridViewWidget").store._dataArray[i]
e passando o índice devolvido. Embora isso funcione, parece que _dataarray é uma propriedade privada. Então é seguro usar?
Solução
Eu sou novo no me dojo, mas isso deve ser útil se não estiver totalmente correto. Em primeiro lugar, dojox.grid.enhancedGrid
está construído em cima de dojox.grid.DataGrid
, então confira a documentação aqui:
Documentação Dojox.Grid.DataGrid
grid.getItem(idx)
Retorna o 'item' da loja no índice fornecidogrid.selection.getSelected()
Retorna uma matriz dos itens selecionados
Você deve poder usar qualquer um deles para obter o item que deseja.
Outras dicas
Usando a marcação declarativa, você pode fazer algo como (da memória, pode precisar de ajustes para ser funcional):
<script type="text/javascript">
function formatThisColumn(rowIndex, rowObject) {
if (rowObject == null) return;
field = rowObject.i.fieldName;
return field;
}
</script>
<div dojoType="dojo.data.ItemFileReadStore" id="store" jsid="jsonStore" url="test.json"></div>
<table dojoType="dojox.grid.EnhancedGrid" id="gridNode" jsid="grid" store="store">
<thead>
<tr>
<th get="formatThisColumn">A Computed Column</th>
</tr>
</thead>
</table>
Observe a função 'formatthiscolumn': Isso é chamado pelo menos uma vez por linha no datagrid e é aprovado no índice da linha (dentro dos itens JSON) e um objeto que contém o item 'atual' (usando o índice 'i' ). Isso fornece os valores originais da resposta JSON enquanto o Datagrid está sendo renderizado.