【问题标题】:getCell(row,col) in GWT HTMLTableGWT HTMLTable 中的 getCell(row,col)
【发布时间】:2011-11-10 16:38:16
【问题描述】:

HTMLTable中没有这样的方法:

Cell c =  getCell(row,col);

在给定行和列的情况下,在 HTML/Flex 表格中获取单元格的最有效方法是什么?

【问题讨论】:

  • 应该在回答之前问这个问题,但迟到总比没有好:你在说com.google.gwt.user.client.ui.HTMLTable.Cellcom.google.gwt.cell.client.Cell<C>吗?

标签: gwt html-table flextable


【解决方案1】:

取决于你想做什么。

如果你想读/写单元格的内容,你可能想使用HTMLTable#setText(int,int)HTMLTable#getText(int,int),或者HTMLTable#setWidget(int,int)HTMLTable#getWidget(int,int),如果单元格的内容是一个小部件。

HtmlTable.CellFormatter (link to gwt javadoc) 及其子类中有更多的函数可以读取/写入单元格的属性 - 您可以使用HTMLTable#getCellFormatter() 获取它,也可以强制转换它,具体取决于您的HTMLTable 的实现正在使用。例如,使用单元格格式化程序,您可以设置/删除样式、属性或获取底层Element (link to gwt javadoc) 以获得更直接的控制。

【讨论】:

  • 我并不是要寻找 Cell 的替代品。我有理由得到一个细胞,这个讨论之外的原因。
【解决方案2】:

HTMLTable有以下方法:

  • HTMLTable#isCellPresent(int row, int column)
  • HTMLTable#getWidget(int row, int column)

你可以像这样使用它们编写一个实用方法:

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;
}

【讨论】:

  • 这行不通,因为 Cell 是 TD 的接口而不是小部件。例如TextInputCell 是一个 Cell 的实现。我的 HTMLTable 没有小部件。
  • 你有例子吗?如果您使用的是 HTMLTable.Cell 它仅适用于HTMLTable#getCellForEvent 并且HTMLTable 中的所有add(...) 小部件都将IsWidget 作为参数?如果您使用的是HTMLTable.Cell,则需要公开构造函数并将其与一些强制转换(例如TableElement table = TableElement.as(htmlTable.getElement())结合起来并遍历它以重新创建您的单元格。
【解决方案3】:

我使用下面的代码来注册鼠标悬停事件,该事件将影响您悬停的任何单元格的值并将其显示在工具提示中。您可以修改侦听器以进行单击并获得相同的内容。我的事件代码是:

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 }); 
}

【讨论】:

    猜你喜欢
    • 2018-12-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 2021-05-06
    相关资源
    最近更新 更多