GWT可点击安全HTMLcell?

GWT可点击安全HTMLcell?,gwt,Gwt,我在datagrid上定义了一个SafeThmlCell。html呈现得很好,但我需要那个单元格是可点击的,它在可点击的文本单元格上工作。这是我的密码: SafeHtmlCell itemCell = new SafeHtmlCell(); Column<MyStoreItems, SafeHtml> itemNameColumn = new Column<MyStoreItems, SafeHtml>(itemCell) { @Overr

我在datagrid上定义了一个SafeThmlCell。html呈现得很好,但我需要那个单元格是可点击的,它在可点击的文本单元格上工作。这是我的密码:

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

        }
    });
SafeHtmlCell itemCell=new-SafeHtmlCell();
Column ItemName Column=新列(itemCell){
@凌驾
公共安全HTML getValue(MyStoreItems storeItem){
SafeHtmlBuilder sb=新的SafeHtmlBuilder();
某人以““””号结尾;
某人以““””号结尾;
sb.appender(storeItem.getItemName());
某人以““””号结尾;
sb.appender(storeItem.getPackingUnit()+“”+storeItem.getStoreItemName());
某人以““””号结尾;
让某人回到安全地带();
}
};          
setFieldUpdater(新的FieldUpdater(){
@凌驾
公共无效更新(int索引、MyStoreItems存储项、SafeHtml值){
selectedStoreItem=storeItem;
selectedIndex=索引;
显示选定的存储项(索引、存储项);
}
});

是否有任何解决方法使safehtml单元格可单击?

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

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...
    }
  }
}
公共类MySafeHtmlCell扩展了AbstractCell{
公共MySafeHtmlCell(){
超级(BrowserEvents.CLICK);
}
@凌驾
公共void呈现(上下文上下文、安全HTML值、安全HTMLBuilder sb){
if(值!=null){
附加(价值);
}
}
@凌驾
public void onBrowserEvent(上下文上下文、元素父级、安全HTML值、NativeEvent事件、,
ValueUpdater(ValueUpdater){
字符串eventType=event.getType();
if(BrowserEvents.CLICK.equals(eventType)){
//做点什么。。。
}
}
}
在上面的实现中,我复制了SafeThmlCell实现并添加了click事件处理。当然,你应该考虑仅仅扩展SuffHTMLCyt而不是重写它。

无关注释:代替使用SuffHTMLBu建器考虑使用

公共接口MyTemplate扩展了安全HtmlTemplates{
@模板(“{0}:”)
安全HTML消息WithLink(安全HTML消息、字符串url、字符串链接文本、,
弦乐风格);
}

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

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...
    }
  }
}
公共类MySafeHtmlCell扩展了AbstractCell{
公共MySafeHtmlCell(){
超级(BrowserEvents.CLICK);
}
@凌驾
公共void呈现(上下文上下文、安全HTML值、安全HTMLBuilder sb){
if(值!=null){
附加(价值);
}
}
@凌驾
public void onBrowserEvent(上下文上下文、元素父级、安全HTML值、NativeEvent事件、,
ValueUpdater(ValueUpdater){
字符串eventType=event.getType();
if(BrowserEvents.CLICK.equals(eventType)){
//做点什么。。。
}
}
}
在上面的实现中,我复制了SafeThmlCell实现并添加了click事件处理。当然,你应该考虑仅仅扩展SuffHTMLCyt而不是重写它。

无关注释:代替使用SuffHTMLBu建器考虑使用

公共接口MyTemplate扩展了安全HtmlTemplates{
@模板(“{0}:”)
安全HTML消息WithLink(安全HTML消息、字符串url、字符串链接文本、,
弦乐风格);
}

只需使用。它扩展并使用点击和按键事件。

只需使用。它扩展并使用click事件和keydown事件。

注意:您还需要使用事件才能使其工作(在构造函数中)。您必须扩展AbstractCell,因为SafeThmlCell不会公开
字符串的构造函数。。。consumedEvents
看起来你是对的,我更新了答案。感谢您的反馈。注意:您还需要使用事件才能使其工作(在构造函数中)。您必须扩展AbstractCell,因为SafeThmlCell不会公开
字符串的构造函数。。。consumedEvents
看起来你是对的,我更新了答案。谢谢你的反馈。