Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在GWT celltable中添加超链接_Gwt - Fatal编程技术网

在GWT celltable中添加超链接

在GWT celltable中添加超链接,gwt,Gwt,我试图在celltable中添加一个超链接,单击该链接我想调用一个方法 使用下面的代码,我在我的celltable中正确地获得了一个超链接,但我无法通过单击该链接调用方法,当我单击该链接时,它会将我带到上一页 任何解决方案 Hyperlink link = new Hyperlink("Delete",""); Column<EmployerJobs, Hyperlink> linkColumn = new Column<EmployerJobs, Hyperlin

我试图在celltable中添加一个超链接,单击该链接我想调用一个方法

使用下面的代码,我在我的celltable中正确地获得了一个超链接,但我无法通过单击该链接调用方法,当我单击该链接时,它会将我带到上一页

任何解决方案

Hyperlink link = new Hyperlink("Delete","");

Column<EmployerJobs, Hyperlink> linkColumn = 
    new Column<EmployerJobs, Hyperlink>(new HyperLinkCell()) { 
      @Override 
      public Hyperlink getValue(EmployerJobs list) {
        link.addClickHandler(new ClickHandler() {
          public void onClick(ClickEvent event) {
            deleteJobs(list);
          }
        });
        return link; 
      }
});
Hyperlink=新的超链接(“删除”和“);
列链接列=
新列(新的HyperLinkCell()){
@凌驾
公共超链接getValue(EmployerJobs列表){
addClickHandler(新的ClickHandler(){
公共作废一次点击(点击事件){
删除工作(列表);
}
});
返回链接;
}
});

正如上面回答中所建议的,当您需要就地编辑时,可以使用更新程序。但是,如果您想捕获单击以执行某些操作,可以使用ClickableTextCell来完成

ClickableTextCell employerJobsCell = new ClickableTextCell();

Column<EmployerJobs, String> employerJobsColumn = new Column<EmployerJobs, String>(employerJobsCell) {    
    @Override
    public String getValue(EmployerJobs object) {
        return object.getWhichStringToDisplay();
    }

    @Override
    public void render(Context context, EmployerJobs object, SafeHtmlBuilder sb) {
        //this method is optional, can be used if the display needs to be customized
    }

    @Override
    public void onBrowserEvent(Context context, Element elem, EmployerJobs object, NativeEvent event) {
        super.onBrowserEvent(context, elem, object, event);

        Event evt = Event.as(event);
        int eventType = evt.getTypeInt();
        if (eventType == Event.ONCLICK) {
            //call delete job when cell is clicked
            deleteJobs(object);
        }
    }
};
ClickableTextCell EmployeerJobsell=新建ClickableTextCell();
列employerJobsColumn=新列(employerJobsCell){
@凌驾
公共字符串getValue(EmployerJobs对象){
return object.getWhichStringToDisplay();
}
@凌驾
公共void呈现(上下文上下文、EmployerJobs对象、SafeHtmlBuilder sb){
//此方法是可选的,可在需要自定义显示时使用
}
@凌驾
public void onBrowserEvent(上下文上下文、元素元素、EmployerJobs对象、NativeEvent事件){
onBrowserEvent(上下文、元素、对象、事件);
事件evt=事件.as(事件);
int eventType=evt.getTypeInt();
if(eventType==Event.ONCLICK){
//单击单元格时调用删除作业
删除作业(对象);
}
}
};

addColumn(employerJobsColumn,“标题在这里”)

您可以使用、ButtonCell或

可点击文本单元格

Column<EmployerJobs, String> linkColumn = 
    new Column<EmployerJobs, String>(new ClickableTextCell())  {
         @Override
         public String getValue(EmployerJobs object)  {
             return TEXT_TO_DISPLAY;
         }
    },'linkheadertext');
linkColumn.setFieldUpdater(new FieldUpdater<EmployerJobs, String>() {
         @Override
         public void update(int index, EmployerJobs object, String value) {
             deleteJobs(object);
         }
});
Column<EmployerJobs, String> buttonColumn = 
    new Column<EmployerJobs, String>(new ButtonCell())  {
         @Override
         public String getValue(EmployerJobs object)  {
             return TEXT_TO_DISPLAY;
         }
    },'linkheadertext');
buttonColumn.setFieldUpdater(new FieldUpdater<EmployerJobs, String>() {
         @Override
         public void update(int index, EmployerJobs object, String value) {
             deleteJobs(object);
         }
});
Column<EmployerJobs, EmployerJobs> actionColumn = 
    new Column<EmployerJobs, EmployerJobs>(new ActionCell<EmployerJobs>("Click Me",
        new ActionCell.Delegate<EmployerJobs>() {
            @Override
            public void execute(EmployerJobs jobs) {
                deleteJobs(jobs);
            }
        })
    {
         @Override
         public EmployerJobs getValue(EmployerJobs object)  {
             return object;
         }
    },'linkheadertext');
列链接列=
新列(新的ClickableTextCell()){
@凌驾
公共字符串getValue(EmployerJobs对象){
将文本返回到屏幕;
}
}“链接头文本”);
setFieldUpdater(新的FieldUpdater(){
@凌驾
公共无效更新(int索引、EmployerJobs对象、字符串值){
删除作业(对象);
}
});
按钮cell

Column<EmployerJobs, String> linkColumn = 
    new Column<EmployerJobs, String>(new ClickableTextCell())  {
         @Override
         public String getValue(EmployerJobs object)  {
             return TEXT_TO_DISPLAY;
         }
    },'linkheadertext');
linkColumn.setFieldUpdater(new FieldUpdater<EmployerJobs, String>() {
         @Override
         public void update(int index, EmployerJobs object, String value) {
             deleteJobs(object);
         }
});
Column<EmployerJobs, String> buttonColumn = 
    new Column<EmployerJobs, String>(new ButtonCell())  {
         @Override
         public String getValue(EmployerJobs object)  {
             return TEXT_TO_DISPLAY;
         }
    },'linkheadertext');
buttonColumn.setFieldUpdater(new FieldUpdater<EmployerJobs, String>() {
         @Override
         public void update(int index, EmployerJobs object, String value) {
             deleteJobs(object);
         }
});
Column<EmployerJobs, EmployerJobs> actionColumn = 
    new Column<EmployerJobs, EmployerJobs>(new ActionCell<EmployerJobs>("Click Me",
        new ActionCell.Delegate<EmployerJobs>() {
            @Override
            public void execute(EmployerJobs jobs) {
                deleteJobs(jobs);
            }
        })
    {
         @Override
         public EmployerJobs getValue(EmployerJobs object)  {
             return object;
         }
    },'linkheadertext');
Column按钮Column=
新列(new ButtonCell()){
@凌驾
公共字符串getValue(EmployerJobs对象){
将文本返回到屏幕;
}
}“链接头文本”);
setFieldUpdater(新的FieldUpdater(){
@凌驾
公共无效更新(int索引、EmployerJobs对象、字符串值){
删除作业(对象);
}
});
ActionCell

Column<EmployerJobs, String> linkColumn = 
    new Column<EmployerJobs, String>(new ClickableTextCell())  {
         @Override
         public String getValue(EmployerJobs object)  {
             return TEXT_TO_DISPLAY;
         }
    },'linkheadertext');
linkColumn.setFieldUpdater(new FieldUpdater<EmployerJobs, String>() {
         @Override
         public void update(int index, EmployerJobs object, String value) {
             deleteJobs(object);
         }
});
Column<EmployerJobs, String> buttonColumn = 
    new Column<EmployerJobs, String>(new ButtonCell())  {
         @Override
         public String getValue(EmployerJobs object)  {
             return TEXT_TO_DISPLAY;
         }
    },'linkheadertext');
buttonColumn.setFieldUpdater(new FieldUpdater<EmployerJobs, String>() {
         @Override
         public void update(int index, EmployerJobs object, String value) {
             deleteJobs(object);
         }
});
Column<EmployerJobs, EmployerJobs> actionColumn = 
    new Column<EmployerJobs, EmployerJobs>(new ActionCell<EmployerJobs>("Click Me",
        new ActionCell.Delegate<EmployerJobs>() {
            @Override
            public void execute(EmployerJobs jobs) {
                deleteJobs(jobs);
            }
        })
    {
         @Override
         public EmployerJobs getValue(EmployerJobs object)  {
             return object;
         }
    },'linkheadertext');
列操作列=
新建列(新建ActionCell(“单击我”,
新建ActionCell.Delegate(){
@凌驾
公共作废执行(EmployerJobs作业){
删除工作(工作);
}
})
{
@凌驾
公共EmployerJobs getValue(EmployerJobs对象){
返回对象;
}
}“链接头文本”);

查看CellSample以获取更多信息。

我已经在类似的帖子上发布了我的答案: 但对于那些将此帖子加入书签的人: 这就是你需要的

public class ClickableSafeHtmlCell extends AbstractCell<SafeHtml> {
/**
 * Construct a new ClickableSafeHtmlCell.
 */
public ClickableSafeHtmlCell() {
    super("click", "keydown");
}

@Override
public void onBrowserEvent(Context context, Element parent, SafeHtml value, NativeEvent event,
        ValueUpdater<SafeHtml> valueUpdater) {
    super.onBrowserEvent(context, parent, value, event, valueUpdater);
    if ("click".equals(event.getType())) {
        onEnterKeyDown(context, parent, value, event, valueUpdater);
    }
}

@Override
protected void onEnterKeyDown(Context context, Element parent, SafeHtml value,
        NativeEvent event, ValueUpdater<SafeHtml> valueUpdater) {
    if (valueUpdater != null) {
        valueUpdater.update(value);
    }
}

@Override
public void render(Context context, SafeHtml value, SafeHtmlBuilder sb) {
    if (value != null) {
        sb.append(value);
    }
}
公共类ClickableSafeThlCell扩展AbstractCell{
/**
*构建一个新的ClickableSafeThmlCell。
*/
公共可点击安全HTMLCELL(){
超级(“点击”、“按键”);
}
@凌驾
public void onBrowserEvent(上下文上下文、元素父级、安全HTML值、NativeEvent事件、,
ValueUpdater(ValueUpdater){
onBrowserEvent(上下文、父级、值、事件、值更新程序);
如果(“单击“.equals(event.getType())){
onEnterKeyDown(上下文、父级、值、事件、值更新程序);
}
}
@凌驾
受保护的void-onEnterKeyDown(上下文上下文、元素父元素、安全HTML值、,
NativeEvent事件,ValueUpdater(ValueUpdater){
if(valueUpdater!=null){
valueUpdater.update(值);
}
}
@凌驾
公共void呈现(上下文上下文、安全HTML值、安全HTMLBuilder sb){
if(值!=null){
附加(价值);
}
}
然后是用法:

Column<YourProxy, SafeHtml> nameColumn = new Column<YourProxy, SafeHtml>(
        new ClickableSafeHtmlCell()) {
    @Override
    public SafeHtml getValue(YourProxy object) {
        SafeHtmlBuilder sb = new SafeHtmlBuilder();
        sb.appendHtmlConstant("<a>");
        sb.appendEscaped(object.getName());
        sb.appendHtmlConstant("</a>");
        return sb.toSafeHtml();
    }
};

nameColumn.setFieldUpdater(new FieldUpdater<YourProxy, SafeHtml>() {
        @Override
        public void update(int index, YourProxy object, SafeHtml value) {
             Window.alert("You have clicked: " + object.getName());

        }
    });
Column name Column=新列(
新建ClickableSafeThlCell()){
@凌驾
公共安全HTML getValue(您的代理对象){
SafeHtmlBuilder sb=新的SafeHtmlBuilder();
某人以““””号结尾;
sb.appender(object.getName());
某人以““””号结尾;
让某人回到安全地带();
}
};
nameColumn.setFieldUpdater(新的FieldUpdater(){
@凌驾
公共void更新(int索引、YourProxy对象、SafeHtml值){
警告(“您已单击:+object.getName());
}
});

但当我点击可点击文本单元格时,超链接也会被点击,它会再次进入上一页