我有一个CellTable,我想在单击添加按钮时添加几行链接。现在我面临的问题是,当我点击添加按钮时,链接将被添加到该列中的所有行。不知何故,感觉我只能在列中添加内容。
// shows project column
final MultipleLinkTextCell projectCell = new MultipleLinkTextCell();
final Column<Booking, String> projectColumn = new Column<Booking, String>(
projectCell) {
@Override
public String getValue(Booking project) {
return "";
}
};
getView().getTimeTable().addColumn(projectColumn, "Tasks");
带按钮的示例
@Override
protected void render(com.google.gwt.cell.client.Cell.Context context,
SafeHtml data, SafeHtmlBuilder sb) {
String string = "";
for (int i = 0; i < value; i++) {
string += "<button type=\"button\" style=\" height:20px; width:22px\">";
}
sb.appendHtmlConstant(string);
if (data != null) {
sb.append(data);
}
}
我正在考虑使用Anchor小部件,因为我可以使用它来处理来自gwtp的placemanager。但我仍然不知道如何将小部件添加到特定行。
//更新: 我现在这样做了,它有效,但最好使用揭示管理器。硬编码链接有点糟糕,因为我总是需要在更改网络服务器时更改对链接的引用。我得到一个字符串,其中包含由逗号分割的多个值。
@Override
protected void render(com.google.gwt.cell.client.Cell.Context context,
SafeHtml data, SafeHtmlBuilder sb) {
String stringData = data.asString();
String[] splitResult = stringData.split(",");
for (int i = 0; i < splitResult.length; i++) {
if (!splitResult[i].equals("")) {
sb.appendHtmlConstant("<div><a href=\"http://127.0.0.1:8888/gwtpTimeTracking.html?gwt.codesvr=127.0.0.1:9997#project;projectid="+splitResult[i].substring(0, 7)+"\">"
+ splitResult[i].substring(0, 7) + "</a></div>");
}
}
答案 0 :(得分:0)
您无法在CellWidgets
中使用任何小部件
但是,您可以创建模仿它的自定义单元格,也可以创建ActionCell
并添加可以触发VaueUpdater
事件的PlaceRequest
。
要将链接添加到特定行,您必须在List<String> links
中呈现的DTO中添加一个字段(i {e CellTable
)。单击“添加”按钮时,必须修改列表中特定DTO的字段。
MyDTO obj = // get the specific DTO from the DataProvider
obj.setLinks(LIST OF LINKS);
在自定义单元格的渲染方法中,检查字段(i..e links
)并显示链接与否。
渲染方法中的value
数据来自哪里?