dojox.enhancedGrid erhalten Zeile ausgewählt
-
27-09-2019 - |
Frage
Wie kann ich die ausgewählte Zeile Objekt von dojox.enhancedGrid bekommen? Ich verwende selection: ‚single‘ z.B. mit Radio-Buttons.
dijit.byId("gridViewWidget").selection.selectedIndex
Gibt die rowIndex.
Aber wie die rowObject dieses Index zu bekommen?
Ich kann die rowNode()
But, was ich brauche Wert der ID-Spalte dieser Zeile erhalten ist.
Es ist möglich, der HTML-DOM zurück von rowNode()
travarse Aber Gibt es einen geraden Weg nach vorn?
Ich bin derzeit dijit.byId("gridViewWidget").store._dataArray[i]
und Leiten des zurück Index. Obwohl Dies funktioniert so scheint es _dataArray ein Privateigentum ist.
So ist es sicher?
Lösung
Ich bin neu mich Dojo, aber das soll, wenn nicht ganz korrekt nützlich sein. Zunächst einmal dojox.grid.enhancedGrid
ist oben auf dojox.grid.DataGrid
gebaut, so dass hier die Dokumentation finden Sie unter:
dojox.grid.DataGrid Dokumentation
-
grid.getItem(idx)
gibt den Speicher 'item' am angegebenen Index -
grid.selection.getSelected()
gibt ein Array der ausgewählten Elemente
Es soll möglich sein, entweder von diesen verwenden, um die Artikel, die Sie wollen.
Andere Tipps
Mit deklarative Markup, man könnte so etwas wie zu tun (aus dem Gedächtnis, Zwicken müssen funktionsfähig sein):
<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>
Beachten Sie die ‚formatThisColumn‘ Funktion: dies zumindest aufgerufen wird einmal pro Zeile im Datagrid, und bekommt den Index der Zeile (innerhalb der JSON Artikel) und ein Objekt übergeben, der den ‚aktuellen‘ Element enthält (mit dem ' i‘Index). Dies gibt Ihnen die ursprünglichen Werte aus der JSON-Antwort, während das Datagrid gerendert wird.