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

Gwt 单击时向列中的行添加链接(CellTable),gwt,hyperlink,row,add,celltable,Gwt,Hyperlink,Row,Add,Celltable,我有一个CellTable,当我单击add按钮时,我想在其中向一行添加几个链接。现在我面临的问题是,当我点击add按钮时,链接将被添加到该列的所有行中。不知怎的,我觉得我只能在专栏中添加内容 // shows project column final MultipleLinkTextCell projectCell = new MultipleLinkTextCell(); final Column<Booking, String> projectColumn = n

我有一个CellTable,当我单击add按钮时,我想在其中向一行添加几个链接。现在我面临的问题是,当我点击add按钮时,链接将被添加到该列的所有行中。不知怎的,我觉得我只能在专栏中添加内容

// 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");
//显示项目列
最终MultipleLinektextCell projectCell=新的MultipleLinektextCell();
最终列projectColumn=新列(
项目单元){
@凌驾
公共字符串getValue(预订项目){
返回“”;
}
};
getView().getTimeTable().addColumn(项目列,“任务”);
按钮示例

 @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);

}
}
@覆盖
受保护的void呈现(com.google.gwt.cell.client.cell.Context),
安全HTML数据,安全HTMLBuilder sb){
字符串=”;
for(int i=0;i
我正在考虑使用Anchor小部件,因为我可以用它处理gwtp中的placemanager。但我仍然不知道如何将小部件添加到特定行

//更新: 我现在是这样做的,它可以工作,但是使用revealmanager更好。硬编码链接有点糟糕,因为在更改Web服务器时,我总是需要更改对链接的引用。我得到一个字符串,其中有几个值被逗号分割

   @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>");
    }
}
@覆盖
受保护的void呈现(com.google.gwt.cell.client.cell.Context),
安全HTML数据,安全HTMLBuilder sb){
String stringData=data.asString();
String[]splitResult=stringData.split(“,”);
for(int i=0;i
您不能在
CellWidgets
中使用任何小部件
但是,您可以创建模拟它的自定义单元格,或者创建一个
ActionCell
,并添加一个触发
PlaceRequest
事件的
VaueUpdater

要将链接添加到特定行,您必须将一个字段(即
列表链接
)添加到您的DTO中,该字段在您的
单元格表
中呈现。单击“添加”按钮时,您必须修改列表中特定DTO的字段

MyDTO obj = // get the specific DTO from the DataProvider
obj.setLinks(LIST OF LINKS);
在自定义单元格的渲染方法中,检查字段(即
链接
)并渲染链接或不渲染链接


渲染方法中的
数据从何而来?

如何检查渲染方法中的链接?在我的列中,我必须返回一个字符串。如果覆盖自定义
单元格的
渲染
方法
一个参数是必须渲染的字符串。您可以检查该参数是否为空/非空然后呈现一个链接,否则什么也不呈现。嗯,好吧,我更新了我的代码。这对我来说很有效,但我对此并不满意。有几件事1。)你可以返回字符串[]或DTO(包含url、标题等),而不是返回字符串在你的
单元格中
.2.)你可以使用相对链接而不是绝对链接。3.)你可以将
位置管理器
插入你的自定义
单元格
并构建url。我返回了一个DTO。它可以工作:)但另一个问题是:我如何在自定义单元格中使用位置管理器?我的意思是我不能只在href或某物中编写它?