我已经在这个问题上工作了很长一段时间,但还是无法解决它。 我有一个带有字段类型图标的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()
方法,但不适用于该字段......
如果有人有线索...... 感谢
答案 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);