getCell(fila, col) en GWT HTMLTable
html-table flextable (3)
No hay tal método en HTMLTable:
Cell c = getCell(row,col);
¿Cuál es la forma más efectiva de obtener una celda en una tabla HTML / Flex, dada la fila y la columna?
HTMLTable tiene los siguientes métodos:
-
HTMLTable#isCellPresent(int row, int column)
-
HTMLTable#getWidget(int row, int column)
Puede escribir un método de utilidad usando ambos de esta manera:
public static Cell<?> getCell(HTMLTable table, int row, int column) {
if (table != null && table.isCellPresent(row, column)) {
Widget widget = table.getWidget(row, column);
if (widget instanceof Cell) {
return (Cell<?>) widget;
}
}
return null;
}
Depende de lo que quieras hacer.
Si desea leer / escribir el contenido de la celda, puede usar HTMLTable#setText(int,int)
y HTMLTable#getText(int,int)
, o HTMLTable#setWidget(int,int)
y HTMLTable#getWidget(int,int)
, si el contenido de la celda es un widget.
Hay más funciones para leer / escribir propiedades de la celda en HtmlTable.CellFormatter
( enlace a gwt javadoc ) y sus subclases: puede obtenerlo usando la HTMLTable#getCellFormatter()
y quizás HTMLTable#getCellFormatter()
, dependiendo de la implementación de HTMLTable
que esté usando . con el formateador de celdas puede, por ejemplo, establecer / eliminar estilos, atributos u obtener el Element
subyacente ( enlace a gwt javadoc ) para un control aún más directo.
Describo el siguiente código para registrar el evento mouseover que calculará el valor de cualquier celda que desplace y la muestre en la información sobre herramientas. Puede modificar el oyente haciendo clic y obtener las mismas cosas. Mi código para el evento es:
Ext.QuickTips.init();
grid_plancode.on(''mouseover'', mouseOver);
function mouseOver(e, tar){
var t = e.getTarget();
var overCell = grid_plancode.getView().findCellIndex(t);
var overRow = grid_plancode.getView().findRowIndex(t);
var selectedText=grid_plancode.getView().getCell(overRow, overCell);
if(overCell !== false && overRow !== false) {
Ext.QuickTips.register({target:tar,title:''Value'', text:selectedText. innerText });
}