0

ClickHandler を含む Anchor を ListGridRecord に追加する必要があります。Click to Anchor は関数を呼び出す必要があります (ListGrid にさらに行を追加します)。hrefでアンカーを書くことができます:

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

動作しません。画像は表示されますが、クリックしても何も起こりません。2番目のケースでは

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]」だけがありました

必要な機能: アイコンと clickHandler を持つ ListGridRecord に属性を設定します。

4

1 に答える 1

0

ListGridRecord にボタンを追加してから、ボタンにクリックハンドラを追加すると簡単です。次のように行う必要があります。

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 に答える