1

リストボックスとコンボボックスの動作に問題があります。行のグループを含むリストボックスがあり、インラインで編集して、コンボボックスの値に基づいてフィールドの値を変更しようとしています。しかし、1つの行のコンボで1つの値を選択すると、他の行のコンボボックスのすべての値が同じ値に変更されます。私が間違っていることを教えてください。ご協力いただきありがとうございます!

これが私のコードです:

            <template name="model" var="item">
                <listitem >
                    <listcell label="@load(item.id)"/>  
                    <listcell label="@load(item.descCodigoTrafico)"/>              
                    <listcell label="@load(item.descAmbitoDeTrafico)"/>
                    <listcell>
                        <combobox 
                            model="@load(vm.listaPrecioEspecial)" 
                            onChange="@command('addToUpdate', entry=item)"
                            selectedItem="@load(item.precioEspecial) @save(item.precioEspecial, before='updateItems')">
                            <template name="model" var="el">
                                <comboitem label="@load(el)"/>
                            </template>
                        </combobox>
                    </listcell>
                    <listcell label="@load(item.tipoDescuento)" />
                    <listcell>
                        <decimalbox inplace="true" 
                        value="@load(item.ppm) @save(item.ppm, before='updateItems')"
                        onChange="@command('addToUpdate', entry=item)" 
                        format="#.0000"/>
                    </listcell>
                </listitem>
            </template>

そして、deVMの2つのメソッドのコード:

    @Command
public void addToUpdate(@BindingParam("entry") TblEscenarioCondTrafico item){
    itemsToUpdate.add(item);
    LOGGER.info(item.toString());
    for(TblEscenarioCondTrafico i : itemsToUpdate){
        LOGGER.info("Item a guardar " + i.toString());
        //LOGGER.info("Elemento...");
    }
}

@NotifyChange("listaTraficos")
@Command
public void updateItems() throws Exception{
    EscenarioCondTraficoService ects = new EscenarioCondTraficoService(em);
    for (TblEscenarioCondTrafico i : itemsToUpdate){
        LOGGER.info("Guardando " + i.toString());
        ects.save(i);
    }
    itemsToUpdate.clear();
    listaTraficos = getListaTraficos();
}
4

2 に答える 2

1

問題はそれであるはずです

model="@load(vm.listaPrecioEspecial)"

モデルと同じCollectionようにすべてに設定されるため、すべてのインスタンスComboboxにバインドされます。Combobox

于 2012-11-29T18:33:43.670 に答える
0

ナビルAが問題はモデルであると言ったように、私は同じ問題を抱えていました。すべてのアイテムで同じです。すべてのアイテムに新しいモデルを作成することを解決しました。それ以外の:

model="@load(vm.listaPrecioEspecial)"

私は次のようなものを置きます:

model="@load(vm.getNewListaPrecioEspecial())

また、VMクラスで、新しいリストを返すgetNewListaPrecioEspecialという名前のメソッドを作成する必要があります。(私の場合、新しいSortingPagingListModel)

于 2018-01-23T09:28:38.433 に答える