Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/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
Grid 实时计算数据-网格(使用Vaadin 7.4.9)_Grid_Vaadin - Fatal编程技术网

Grid 实时计算数据-网格(使用Vaadin 7.4.9)

Grid 实时计算数据-网格(使用Vaadin 7.4.9),grid,vaadin,Grid,Vaadin,这是我的密码,我需要你的帮助。我需要将监听器添加到我的网格中,这样可以将结果实时添加到网格中(例如,单击按钮后为否)。我想在“firstNumber”列中添加数字,在“secondNumber”列中添加第二个数字,然后在“result”列中添加数字的总和 第一个数字:“1”,“第二个数字”:“1”,结果将是“2” 您可以使用ValueChange事件,该事件将告诉您marvelous容器中的值何时更改。不幸的是,该事件只会告诉您更改了哪个属性,以及新值 由于您只有这些信息,因此必须循环容器以重新

这是我的密码,我需要你的帮助。我需要将监听器添加到我的网格中,这样可以将结果实时添加到网格中(例如,单击按钮后为否)。我想在“firstNumber”列中添加数字,在“secondNumber”列中添加第二个数字,然后在“result”列中添加数字的总和

第一个数字:“1”,“第二个数字”:“1”,结果将是“2”


您可以使用
ValueChange
事件,该事件将告诉您marvelous
容器中的值何时更改。不幸的是,该事件只会告诉您更改了哪个
属性
,以及新值

由于您只有这些信息,因此必须循环容器以重新计算内容,尽管时间成本非常巨大
[O(n*m)是n=nº列,m=nº行]

要循环容器,可以使用以下简单代码(这是最简单的方法,没有任何复杂的逻辑和内容):

container.addValueChangeListener(ev->{
List itemIds=container.getItemIds();
for(对象itemId:itemIds){
Item=container.getItem(itemId);
整数firstNumber=(整数)item.getItemProperty(“firstNumber”).getValue();
整数secondNumber=(整数)item.getItemProperty(“secondNumber”).getValue();
item.getItemProperty(“结果”).setValue(firstNumber+secondNumber);
}
});

您可以使用
ValueChange
事件,该事件将在您的marvelous
容器中的值发生更改时通知您。不幸的是,该事件只会告诉您更改了哪个
属性
,以及新值

由于您只有这些信息,因此必须循环容器以重新计算内容,尽管时间成本非常巨大
[O(n*m)是n=nº列,m=nº行]

要循环容器,可以使用以下简单代码(这是最简单的方法,没有任何复杂的逻辑和内容):

container.addValueChangeListener(ev->{
List itemIds=container.getItemIds();
for(对象itemId:itemIds){
Item=container.getItem(itemId);
整数firstNumber=(整数)item.getItemProperty(“firstNumber”).getValue();
整数secondNumber=(整数)item.getItemProperty(“secondNumber”).getValue();
item.getItemProperty(“结果”).setValue(firstNumber+secondNumber);
}
});

您可以查看此信息,它会告诉您容器中的值何时更改,或者它会告诉您整个项目集何时更改。您从哪里获得
firstNumer
secondnumer
值?用户是否编辑网格?他们是从别的地方来的?如果它们是在容器的开头添加的,则不需要
侦听器。你能给我们提供更多的信息吗?@Shirkam数据来自“编辑器”没有来自文件。。。然后从键盘输入
ValueChangeListener
就可以了。我会在可能的时候发布答案。@Shirkam你能在这里写下你的代码(想法)吗?我阅读了文档,但我需要代码或代码示例。。。不只是文本:D,然后,当它好的时候,你可以发布一个答案,我将答案标记为正确:)你可以看看这个,它会告诉你容器中的值何时改变,或者这个会告诉你整个项目集何时改变。你从哪里得到
firstNumer
secondnumer
值?用户是否编辑网格?他们是从别的地方来的?如果它们是在容器的开头添加的,则不需要
侦听器。你能给我们提供更多的信息吗?@Shirkam数据来自“编辑器”没有来自文件。。。然后从键盘输入
ValueChangeListener
就可以了。我会在可能的时候发布答案。@Shirkam你能在这里写下你的代码(想法)吗?我阅读了文档,但我需要代码或代码示例。。。不只是文本:D,然后,当它好的时候,你可以发布一个答案,我将答案标记为正确:)
Grid grid = new Grid();
IndexedContainer container = new IndexedContainer();
grid.setContainerDataSource(container);
container.addContainerProperty("firstNumber", Integer.class, 0);
container.addContainerProperty("secondNumber", Integer.class, 0);
container.addContainerProperty("result", Integer.class, 0);


/* --- Need add this to the listener or method --- */

Item item = container.getItem(0);
int firstNumber = item.getItemProperty("firstNumber").getValue();

item = container.getItem(0);
int secondNumber = item.getItemProperty("secondNumber").getValue();

result = firstNumber + secondNumber;

item = container.getItem(0);
item.getItemProperty("result").setValue(result);

/* -------------------------------- */
container.addValueChangeListener(ev -> {
    List<?> itemIds = container.getItemIds();
    for(Object itemId: itemIds) {
        Item item = container.getItem(itemId);
        Integer firstNumber = (Integer) item.getItemProperty("firstNumber").getValue();
        Integer secondNumber = (Integer) item.getItemProperty("secondNumber").getValue();
        item.getItemProperty("result").setValue(firstNumber+secondNumber);
    }
});