首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vaadin网格行编辑器更改列顺序

vaadin网格行编辑器更改列顺序
EN

Stack Overflow用户
提问于 2019-01-26 19:21:49
回答 1查看 74关注 0票数 0

我有一个简单的实体

代码语言:javascript
复制
 public class Vulnerability{
  private String name;
  private int probability;
  private int damage;
 }

和使用行编辑器的网格

代码语言:javascript
复制
Grid<Vulnerability> vulnerabilityGrid = new Grid<Vulnerability>(Vulnerability.class);
vulnerabilityGrid.setColumns("name", "probability", "damage");
Grid.Column nameColumn = vulnerabilityGrid.getColumn("name");
Grid.Column probabilityColumn = vulnerabilityGrid.getColumn("damage");
Grid.Column damageColumn = vulnerabilityGrid.getColumn("probability");

绑定字段的绑定器代码

代码语言:javascript
复制
Binder<Vulnerability> binderVulnerability = new Binder<Vulnerability>();
TextField nameTextFieldGrid = new TextField(), damageTextFieldGrid = new TextField(), probabilityTextFieldGrid = new TextField();
Binder.Binding<Vulnerability, Integer> probabilityBind = binderVulnerability.forField(probabilityTextFieldGrid).withNullRepresentation("").withConverter(new StringToIntegerConverter(Integer.valueOf(0), "integers only")).bind(Vulnerability::getProbability, Vulnerability::setProbability);
Binder.Binding<Vulnerability, Integer> damageBind = binderVulnerability.forField(damageTextFieldGrid).withNullRepresentation("") .withConverter(new StringToIntegerConverter(Integer.valueOf(0), "integers only")).bind(Vulnerability::getDamage, Vulnerability::setDamage);

nameColumn.setEditorBinding(nameBind);
probabilityColumn.setEditorBinding(probabilityBind);
damageColumn.setEditorBinding(damageBind);

列顺序的问题,当我按下行,编辑器被激活时,我得到了probabilityColumn位置上的损坏字段的编辑器,依此类推。

我如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-26 20:10:50

在这里查看你的代码

代码语言:javascript
复制
Grid.Column probabilityColumn = vulnerabilityGrid.getColumn("damage");
Grid.Column damageColumn = vulnerabilityGrid.getColumn("probability");

您将获取"damage“列来引用probabilityColumn,并使用具有getter和setter的绑定来设置它,如下所示。

代码语言:javascript
复制
Binder.Binding<Vulnerability, Integer> probabilityBind = binderVulnerability.forField(probabilityTextFieldGrid).withNullRepresentation("").withConverter(new StringToIntegerConverter(Integer.valueOf(0), "integers only")).bind(Vulnerability::getProbability, Vulnerability::setProbability);

probabilityColumn.setEditorBinding(probabilityBind);

对于其他列,你可以做vica,反之亦然。所以它是按照编码方式工作的。如您所见,Vaadin Grid和Binder中的API允许这种不对称,因为可以分别定义getter和setter,在您的情况下这是一个编程错误,但在其他情况下,您可以利用此功能。

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

https://stackoverflow.com/questions/54377899

复制
相关文章

相似问题

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