Combobox 基于另一行中的相同ComboxCell更改一行中ComboxCell的选择

Combobox 基于另一行中的相同ComboxCell更改一行中ComboxCell的选择,combobox,grid,gxt,Combobox,Grid,Gxt,我有一个带内联编辑的网格,其中有一个ComboxCell,假设它包含值1,2,3,4,5。我希望有一个功能,当用户在一行中选择2时,所选值为2的任何其他行都会将其选择更改为前一行的先前值。我通过向列中添加组合框编辑器实现了这一点 combo.addBeforeSelectionHandler(new BeforeSelectionHandler<Integer>() { @Override public void onBeforeSelection(

我有一个带内联编辑的网格,其中有一个ComboxCell,假设它包含值1,2,3,4,5。我希望有一个功能,当用户在一行中选择2时,所选值为2的任何其他行都会将其选择更改为前一行的先前值。

我通过向列中添加组合框编辑器实现了这一点

combo.addBeforeSelectionHandler(new BeforeSelectionHandler<Integer>() {

        @Override
        public void onBeforeSelection(BeforeSelectionEvent<Integer> event) {

            Integer item= event.getItem();
            ColumnConfig<Sample, Integer> column= columnModel.getColumn(1);
            ComboBox<Integer> box= (ComboBox<Integer>)event.getSource();
            String text= box.getSelectedText();
            Collection<Store<Sample>.Record> records= ivGrid.getStore().getModifiedRecords();
            if(records.isEmpty())
            {
                Sample sample= getSampleByIndex(item);

                if(sample!=null)
                {
                    Record record = listStore.getRecord(sample);
                    record.addChange(sampleValueProvider.index(), Integer.parseInt(text));
                }
                else 
                {
                    Sample sample2= listStore.get(item-1);
                    if(sample2!=null)
                    {
                        Record record = listStore.getRecord(sample2);
                        record.addChange(sampleValueProvider.index(), Integer.parseInt(text));
                    }
                }
                return;
            }

            for(Record r : records)
            {
                Sample currentSample= (Sample) r.getModel();
                Change<Sample, Integer> displayOrder= r.getChange(sampleValueProvider.index());
                if(displayOrder==null)
                    continue;
                if(displayOrder.getValue()==item)
                {
                    Record record = listStore.getRecord(currentSample);
                    record.addChange(sampleValueProvider.index(), Integer.parseInt(text));
                }
            }

            ivGrid.getView().refresh(true);

        }
combo.addBeforeSelectionHandler(新的BeforeSelectionHandler(){
@凌驾
在BeforeSelection(BeforeSelectionEvent事件)上的公共无效{
整数项=event.getItem();
ColumnConfig column=columnModel.getColumn(1);
ComboBox=(ComboBox)事件。getSource();
String text=box.getSelectedText();
收集记录=ivGrid.getStore().getModifiedRecords();
if(records.isEmpty())
{
样本样本=getSampleByIndex(项目);
if(示例!=null)
{
Record Record=listStore.getRecord(示例);
record.addChange(sampleValueProvider.index(),Integer.parseInt(text));
}
其他的
{
样本sample2=listStore.get(第1项);
if(sample2!=null)
{
Record Record=listStore.getRecord(sample2);
record.addChange(sampleValueProvider.index(),Integer.parseInt(text));
}
}
返回;
}
用于(记录r:记录)
{
Sample currentSample=(Sample)r.getModel();
Change displayOrder=r.getChange(sampleValueProvider.index());
if(displayOrder==null)
继续;
if(displayOrder.getValue()==项)
{
Record Record=listStore.getRecord(currentSample);
record.addChange(sampleValueProvider.index(),Integer.parseInt(text));
}
}
ivGrid.getView().refresh(true);
}