【问题标题】:Adding links to a row in a column on click (CellTable)单击时将链接添加到列中的行(CellTable)
【发布时间】:2013-06-14 06:21:12
【问题描述】:

我有一个 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。但我仍然不知道如何将小部件添加到特定行。

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

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

【问题讨论】:

    标签: gwt hyperlink row add celltable


    【解决方案1】:

    您不能在CellWidgets 中使用任何小部件。
    但是,您可以创建模仿它的自定义单元格或创建ActionCell 并添加一个触发PlaceRequest 事件的VaueUpdater

    要将链接添加到特定行,您必须将字段(即List&lt;String&gt; links)添加到在您的CellTable 中呈现的DTO。当您单击“添加”按钮时,您必须修改列表中特定 DTO 的字段。

    MyDTO obj = // get the specific DTO from the DataProvider
    obj.setLinks(LIST OF LINKS);
    

    在自定义单元格的渲染方法中,检查字段(即links)并渲染或不渲染链接。

    您的渲染方法中的value 数据来自哪里?

    【讨论】:

    • 如何查看渲染方法中的链接?在我的专栏中,我必须返回一个字符串。
    • 如果您覆盖自定义Cellrender 方法,一个参数是必须呈现的字符串。您可以检查它是否不为空/不为空,然后呈现链接,否则不呈现任何内容。
    • 嗯好的,我更新了我的代码。它对我有用,但我对此并不满意。
    • 几件事 1.) 您可以在 Cell 中返回 String[] 或 DTO(包含 url、标题等),而不是返回 String。 2.)您可以使用相对链接而不是绝对链接。 3.) 您可以将PlaceManager 注入您的自定义Cell 并构造网址。
    • 我返回了一个 DTO。它有效:) 但另一个问题:如何在我的自定义单元格中使用 placemanager?我的意思是我不能把它写在 href 或 sth 中?
    猜你喜欢
    • 1970-01-01
    • 2011-07-29
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 2018-12-25
    • 2012-10-31
    相关资源
    最近更新 更多