在单击时添加指向列中行的链接(CellTable)

时间:2013-06-14 06:21:13

标签: gwt hyperlink row add celltable

我有一个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>");
    }
}

1 个答案:

答案 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数据来自哪里?