Quando si utilizza Handsontable, sembra difficile recuperare l'intestazione di una riga da un menu contestuale.Recupero di un colpo di testa nascosta all'interno di un'istanza handsontable ordinato
consideri il seguente origine dati:
var data = function() {
return [["1212", "roman", "i", "ii", "iii"],
["3121", "numeric", 1, 2 ,3],
["4126", "alpha", 'a', 'b', 'c']];
};
È possibile creare un'istanza Handsontable che visualizza tutti i dati, ma i primi due "colonne", e che ha un menù contestuale come segue:
// 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?"
}
}
},
});
il options
parametro dal callback menù contestuale è fatto di due oggetti, start
e end
, entrambe aventi e una proprietà row
col
.
Manteniamolo semplice e presupponiamo che ci sarà sempre una singola cella selezionata: start
e end
sono lo stesso oggetto.
È quindi possibile recuperare l'intestazione dall'origine dati (e non i dati associati all'istanza) utilizzando il metodo di Handsontable getSourceDataAtRow
.
Questo potrebbe fare il trucco, ma quando la tabella è stata ordinata facendo clic sull'intestazione di una colonna, il numero di riga dall'origine dati ei dati associati all'istanza non sono più gli stessi.
Here is an example che mostra qual è il problema.
È impossibile recuperare uno dei primi due elementi di una riga dopo aver ordinato la tabella.
Mi sono perso qualcosa?
Totalmente quello che mi serviva, grazie. Ecco un [aggiornato jsFiddle con la soluzione] (http://jsfiddle.net/upc4mcd0/6/) per le persone interessate alla soluzione. –