Bei Verwendung von Handsontable scheint es schwierig zu sein, die Kopfzeile einer Zeile aus einem Kontextmenü abzurufen.Abrufen einer ausgeblendeten Kopfzeile in einer sortierten handsontablen Instanz
Betrachten Sie die folgende Datenquelle:
var data = function() {
return [["1212", "roman", "i", "ii", "iii"],
["3121", "numeric", 1, 2 ,3],
["4126", "alpha", 'a', 'b', 'c']];
};
Es ist möglich, eine Handsontable Instanz zu erstellen, die alle Daten zeigt aber die ersten beiden „Säulen“, und das hat ein Kontextmenü, wie folgend:
// Settings to display all columns but the first two
var dataCols = []
for(var i=2; i<data()[0].length; i++) {
dataCols.push({ data: i })
}
// Instance creation
var hot = new Handsontable(container, {
data: data(),
height: 396,
colHeaders: true,
rowHeaders: false,
columns: dataCols,
stretchH: 'all',
columnSorting: true,
contextMenu: {
callback: function(key, options) {
switch(key) {
case 'header_pls':
// TODO retrieve the "hidden header" from here
break;
}
},
items: {
"header_pls": {
name: "Header please?"
}
}
},
});
die options
Parameter aus dem Menü Rückruf Kontext besteht aus zwei Objekten, start
und end
, die beide eine row
und eine col
Eigenschaft.
Lassen Sie uns es einfach halten und davon ausgehen, dass immer eine einzelne Zelle ausgewählt wird: start
und end
sind das gleiche Objekt.
Mit der Handsontable-Methode getSourceDataAtRow
ist es dann möglich, den Header aus der Datenquelle (und nicht die an die Instanz gebundenen Daten) abzurufen.
Dies könnte zwar funktionieren, aber wenn die Tabelle durch Klicken auf eine Spaltenüberschrift sortiert wurde, sind die Zeilennummer aus der Datenquelle und die an die Instanz gebundenen Daten nicht mehr dieselben.
Here is an example das zeigt, was das Problem ist.
Es ist unmöglich, eines der zwei ersten Elemente einer Zeile abzurufen, nachdem die Tabelle sortiert wurde.
Habe ich etwas verpasst?
Total was ich brauchte, danke. Hier ist ein [aktualisiert jsFiddle mit der Lösung] (http://jsfiddle.net/upc4mcd0/6/) für Leute, die an der Lösung arbeiten interessiert sind. –