**
*SysParaConfig是一个实现了IsSerializable的类,包含了所有列配置的get(),set()方法
*column为表格中其中一列的列名,operation是从后台数据库中得到的值为"修改"
*/
GridCellRenderer<SysParaConfig> renderer = new GridCellRenderer<SysParaConfig>() {
public String render(SysParaConfig model, String property,
ColumnData config, int rowIndex, int colIndex,
ListStore<SysParaConfig> store) {
int id = model.getId();
String operation = model.getOperation();
//添加的连接,链接显示的值为operation,该列唯一标示符是id
String link = "<a οnclick='return false' href='" + "?id=" + id
+ "'>" + operation + "</a>";
return link;
}
};
column.setRenderer(renderer );
//这样在表格grid列名为column的列上就成功添加了连接。
// 添加表格点击事件
Listener<ComponentEvent> gridListener = new Listener<ComponentEvent>() {
public void handleEvent(ComponentEvent be) {
GridEvent ge = (GridEvent) be;
grid = (EditorGrid<SysParaConfig>) ge.grid;
//获得点击的行值
int rowIndex = ge.rowIndex;
//获得点击的列值
int colIndex = ge.colIndex;
if (rowIndex < 0 || colIndex < 0) return;
List<String> list = new ArrayList<String>();
list.clear();
//获取点击行列的值
String isEdit = grid.getView().getCell(rowIndex, colIndex)
.getInnerText().trim();
//如果点击的是修改,就执行下面的操作
if ("operation".equals(isEdit)) {
store.commitChanges();
//从点击行的第一列开始取值,直至最后一列的值
for (int i = 0; i < 5; i++) {
//因为表格的列值是固定值,所以i<列值(5是列值)
Element et = grid.getView().getCell(rowIndex, i);
String value = et.getInnerText();
list.add(value);
}
//获取成功后可以跳到initWindow(list)去显示点击行的所有值或者做其他的处理
initWindow(list);
}
}
};
/**
*当然了你的给表格加上这个监听事件才会生效,cp是一个ContentPanel
*grid不用说就是你要添加链接并监听点击事件的表格类型是EditorGrid
*/
if (cp != null)
grid.addListener(Events.OnClick, gridListener);
//弹出窗口,处理数据
private void initWindow(list){
Window window=new Window();
window.setSize(300,280);
window.show();
......
}