0

我需要将带有 clickHandler 的 Anchor 添加到 ListGridRecord。Click to Anchor 应该调用该函数(向 ListGrid 添加更多行)。我可以用 href 编写 Anchor:

private void addAnchorToRecord(ListGridRecord rec) {
    String img  = "<img src='pict/Plus.png'/>";
    Anchor myAnchor = new Anchor(img, true, "example.html");
    String value = myAnchor.toString();
    rec.setAttribute("versions", value);
}

但是这段代码:

private void addAnchorToRecord(final ListGridRecord rec) {
    String img  = "<img src='pict/Plus.png'/>";
    Anchor myAnchor = new Anchor(img, true);
    myAnchor.addClickHandler(new ClickHandler() {
           @Override
           public void onClick(ClickEvent event) {
               addExtraRows(rec);
           }
        });
    String value = myAnchor.toString();
    rec.setAttribute("versions", value);
}

不起作用。我看到图像,但点击后没有任何反应。在第二种情况下

value = "<a href="javascript:;" class="gwt-Anchor"><img src="pict/Plus.png"></a>"

我认为在这个地方我丢失了有关 clickHandler 的信息。在这种情况下如何成功添加 ClickHandler?

编辑

我使用了 LinkItem:

private void updateVersions(final ListGridRecord rec) {
    LinkItem linkItem = new LinkItem("link");  
    linkItem.setTitle("LinkItem");  
    linkItem.setLinkTitle("Click Me");  
    linkItem.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            showPreviousVersions(rec);
        }
    });
    rec.setAttribute("versions", linkItem);
}

然后在我的牢房里只有“[object Object]”

我需要的功能:将属性设置为 ListGridRecord,它具有图标和 clickHandler。

4

1 回答 1

0

如果您只是在 ListGridRecord 中添加一个按钮,然后向该按钮添加一个 clickhandler,它会更容易。必须这样做:

配置 ListGrid 时:

    setShowRecordComponents      (true );
    setShowRecordComponentsByCell(true );

设置字段时

    ...
    ListGridField btnField= new ListGridField("btnFieldName", " ");
    ...

然后像这样覆盖createRecordComponent:

 @Override
 protected Canvas createRecordComponent(final ListGridRecord record, final Integer colNum){
        if(getFieldName(colNum).equalsIgnoreCase(("btnFieldName"))){
               IButton btn= new IButton("");
               //configure the button
               btn.addClickHandler(new ClickHandler() {
                  @Override
                  public void onClick(ClickEvent event) {
                    //your logic
                  }
               });
               return btn;
         }
     return super.createRecordComponent(record, colNum);
 }
于 2016-04-07T08:49:53.620 回答