GWT单元格表单击新行可获得先前选定行的值

时间:2014-06-02 09:24:46

标签: gwt

在GWT 2.6 CellTable中,我写了一个单击事件来执行某些操作。单击CellTable行时,我无法获得正确的行索引;只有双击事件才能正确返回行。

final SingleSelectionModel<PatientDTO> selectionModel = 
    new SingleSelectionModel<PatientDTO>();

patientsTable.setSelectionModel(selectionModel);  

patientsTable.addDomHandler(new ClickHandler()  
{  
    @Override  
    public void onClick(ClickEvent event)  
    {
        PatientDTO selected = selectionModel.getSelectedObject();
        if (selected != null) 
        {
            RootLayoutPanel.get().clear();
            RootLayoutPanel.get().add(new PatientPanel(selected));
        }
    }
}, ClickEvent.getType());

1 个答案:

答案 0 :(得分:0)

使用SingleSelectionModelMultiSelectionModel并在其上添加SelectionChangeHandler,当CellTable

中的选择发生变化时会触发final SingleSelectionModel<Contact> selectionModel = new SingleSelectionModel<Contact>(); //final MultiSelectionModel<Contact> selectionModel = new MultiSelectionModel<Contact>(); selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() { @Override public void onSelectionChange(SelectionChangeEvent event) { Set<Contact> selected = selectionModel.getSelectedSet(); if (selected != null) { for (Contact contact : selected) { System.out.println("You selected: " + contact.name); } } } });

示例代码:

CellPreviewHandler

或者尝试使用table.addCellPreviewHandler(new Handler<Contact>() { @Override public void onCellPreview(CellPreviewEvent<Contact> event) { int row = event.getIndex(); int column = event.getColumn(); if ("focus".equals(event.getNativeEvent().getType())) { //.. } if ("blur".equals(event.getNativeEvent().getType())) { //... } if ("mousedown".equals(event.getNativeEvent().getType())) { //.. } if ("mouseover".equals(event.getNativeEvent().getType())) { //.. } } });

{{1}}