3

我已经在这个问题上工作了很长一段时间,但一直无法解决它。我有一个带有字段类型图标的列表网格。我想将光标更改为“移交”图标。

我一直在网上搜索,发现存在一些解决方案。其中之一是addCellOverHandler用于列表网格。但我不明白如何更改列表网格指定字段的光标。

this.addCellOverHandler(new CellOverHandler() {

    @Override
    public void onCellOver(CellOverEvent event) {
    // not able to get the field and setCursor()        
    }
});

我在 listgrid 中的字段定义为:

ListGridField iconField = new ListGridField("icon");
iconField.setAlign(Alignment.CENTER);
iconField.setType(ListGridFieldType.ICON);
iconField.setIcon("icons/icon.gif");

就像论坛上有人指出setCursor()的那样,listgrid 存在一种方法,但不仅仅适用于该领域......

如果有人有线索...谢谢

4

4 回答 4

2

经过更多(更多......)谷歌搜索,我发现了这个:

http://forums.smartclient.com/showthread.php?t=15748

事情是重写getCellStyle列表网格中的方法。这是我使用的代码:

@Override
protected String getCellStyle(ListGridRecord record, int rowNum, int colNum) {
    if (colNum==6){
        return "EC_pointer";
    }
    return super.getCellStyle(record, rowNum, colNum);
}

在我的 CSS 文件中:

.EC_pointer { 
    cursor: pointer; 
}

主要后果是您必须提前知道字段的列号。

于 2012-05-02T10:05:06.883 回答
2

在我的评论和从这里添加信息之后,我测试了以下代码,该代码在 Firefox 5.0 下与 SmartGwt2.4 一起使用。

demandesGrid.setCanHover(true);
demandesGrid.setShowHover(false);
demandesGrid.addCellHoverHandler(new CellHoverHandler() {
    @Override
    public void onCellHover(CellHoverEvent event) {
        if (event.getColNum() == demandesGrid.getFieldNum("icon")) {
        //  SC.say(demandesGrid.getChildren()[3].toString());
            demandesGrid.getChildren()[3].setCursor(Cursor.POINTER);
        } else {
            demandesGrid.getChildren()[3].setCursor(Cursor.DEFAULT);
        }
    }
});

我不知道 的索引ListGridBody是否恒定;我用SC.say线找到了它。

于 2012-05-02T19:27:00.973 回答
0

最好的方法在这里得到了充分展示(看看“comments/stats”字段是如何被初始化的)。

简而言之,您必须扩展 ListGrid 并覆盖 createRecordComponent 方法。在这种方法中,您可以制作任何您喜欢的自定义组件,它将显示在网格单元格中。

ListGrid 也应该初始化为:

listGrid.setShowRecordComponents(true);
listGrid.setShowRecordComponentsByCell(true);
于 2012-11-06T00:54:07.623 回答
0

怎么样

grid.addCellOverHandler(new CellOverHandler() {
  @Override
  public void onCellOver(CellOverEvent event) {
    //cellOver event to get field and refresh the cell
    //grid.refreshCell(i, j);
  }
});
于 2012-05-01T05:30:30.567 回答