smartgwt listgrid设置光标移交图标字段

时间:2012-04-30 15:20:08

标签: smartgwt listgrid

我已经在这个问题上工作了很长一段时间,但还是无法解决它。 我有一个带有字段类型图标的listgrid。我想将光标更改为“手动”图标。

我一直在网上搜索并看到存在几种解决方案。 其中一个是使用addCellOverHandler作为列表网格。但我不明白如何更改listgrid的指定字段的光标。

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

就像论坛上指出的人一样,listgrid存在setCursor()方法,但不适用于该字段......

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

4 个答案:

答案 0 :(得分:2)

经过一段时间(更多......)谷歌搜索后,我发现了这个:

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

重要的是覆盖listgrid中的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; 
}

主要的后果是您必须事先知道该字段的列号。

答案 1 :(得分:2)

继我的评论和添加来自here的信息后,我测试了以下代码,该代码适用于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行找到了它。

答案 2 :(得分:0)

怎么样

grid.addCellOverHandler(new CellOverHandler() {
  @Override
  public void onCellOver(CellOverEvent event) {
    //cellOver event to get field and refresh the cell
    //grid.refreshCell(i, j);
  }
});

答案 3 :(得分:0)

最佳方法已完全展示here(请查看“评论/统计信息”字段的初始化方式)。

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

ListGrid也应该用:

初始化
listGrid.setShowRecordComponents(true);
listGrid.setShowRecordComponentsByCell(true);