首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWT Clickable SafeHTMLCell?

GWT Clickable SafeHTMLCell?
EN

Stack Overflow用户
提问于 2013-09-11 17:38:07
回答 2查看 1.1K关注 0票数 1

我在我的datagrid上定义了一个safehtmlcell。html呈现得很好,但我需要那个单元格是可点击的,它可以在clickabletextcell上工作。下面是我的代码:

代码语言:javascript
复制
SafeHtmlCell itemCell = new SafeHtmlCell();
        Column<MyStoreItems, SafeHtml> itemNameColumn = new Column<MyStoreItems, SafeHtml>(itemCell) {
        @Override
        public SafeHtml getValue(MyStoreItems storeItem) {
            SafeHtmlBuilder sb = new SafeHtmlBuilder();
            sb.appendHtmlConstant("<table>");
            sb.appendHtmlConstant("<td style='font-size:95%;'>");
            sb.appendEscaped(storeItem.getItemName());
            sb.appendHtmlConstant("</td></tr><tr><td>");
            sb.appendEscaped(storeItem.getPackingUnit() + " " + storeItem.getStoreItemName());
            sb.appendHtmlConstant("</td></tr></table>");

            return sb.toSafeHtml();
        }
    };          
    itemNameColumn.setFieldUpdater(new FieldUpdater<MyStoreItems, SafeHtml>() {

        @Override
        public void update(int index, MyStoreItems storeItem, SafeHtml value) {
            selectedStoreItem = storeItem;
            selectedIndex = index;
            showSelectedStoreItems(index, storeItem);

        }
    });

有什么办法可以让safehtml单元格变得可点击吗?

EN

回答 2

Stack Overflow用户

发布于 2013-09-11 18:17:01

您必须创建一个扩展AbstractCell的类,然后覆盖onBrowserEvent()方法。

代码语言:javascript
复制
public class MySafeHtmlCell extends AbstractCell<SafeHtml> {

  public MySafeHtmlCell() {
     super(BrowserEvents.CLICK);
  }

  @Override
  public void render(Context context, SafeHtml value, SafeHtmlBuilder sb) {
    if (value != null) {
      sb.append(value);
    }
  }

  @Override
  public void onBrowserEvent(Context context, Element parent, SafeHtml value, NativeEvent event,
      ValueUpdater<SafeHtml> valueUpdater) {
    String eventType = event.getType();
    if (BrowserEvents.CLICK.equals(eventType)) {
      // Do something...
    }
  }
}

在上面的实现中,我复制了一个SafeHtmlCell实现,并添加了点击事件处理。当然,您应该考虑只扩展SafeHtmlCell而不是重写它。

无关注意:考虑使用HtmlTemplates,而不是使用safeHtmlBuilder

代码语言:javascript
复制
public interface MyTemplate extends SafeHtmlTemplates {
   @Template("<span class=\"{3}\">{0}: <a href=\"{1}\">{2}</a></span>")
   SafeHtml messageWithLink(SafeHtml message, String url, String linkText,
       String style);
}
票数 1
EN

Stack Overflow用户

发布于 2013-09-12 04:09:44

只需使用ClickableTextCell即可。它扩展了AbstractSafeHtmlCell并使用了click和keydown事件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18737664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档