我已经使用com.google.gwt.user.client.ui.Grid创建了一个Grid; :
Grid g = new Grid (5,5);
我已经通过sql查询向网格添加了几个元素:
g.setWidget(i, 0, texto(i, temp.get(1)));
g.setWidget(i, 1, desplegable(temp.get(2)));
g.setWidget(i, 2, texto(i, temp.get(3)));
g.setWidget(i, 3, texto(i, temp.get(4).replace("%%", "")));
g.setWidget(i, 4, gu);
“ texto”和“ desplegable”都是我创建的用于自定义文本框和列表框的方法;两者都有一个click事件,通过它们可以更改/修改其初始值。
“ gu”是我在上面的代码上方创建的一个Button。 “ gu”有一个click事件,它假装要做的是获取网格中包含的单元格元素的值。
下面以其为例:
ItemId ItemName
-----------------------
01 Peak [gu]
02 Paper [gu]
03 Pick [gu]
现在,当我单击“ gu”时,根据要单击的“ gu”,我想从网格中检索两个值(itemid和itemname)。我知道如何区分单击哪个“ gu”,但是我不知道如何访问与该“ gu”按钮对齐的元素。
但是直到现在我还没有找到如何做到这一点。
谁能给我一些启示?
预先感谢您的宝贵时间,
亲切的问候,
最佳答案
您可以使用地图保留对每个按钮的行索引的引用,例如:
Map<Button, Integer> buttonRowMap = new HashMap<Button, Integer>();
...
g.setWidget(i, 4, gu); // Your existing line
buttonRowMap.put(gu, i); // Keep a reference to the row index
然后,在您的ClickHandler中,您可以检索行索引和同一行上的小部件:
public void onClick(ClickEvent event) {
Button button = (Button) event.getSource();
Integer rowIndex = buttonRowMap.get(button);
TextBox tb = (TextBox) g.getWiget(rowIndex, 2);
...
}