NC表头改变时保留表体的选中状态
当UI处于多选状态时,表体行的选中状态不会保存下来。表头的选中行改变时,表体行将重新处于非选中状态。
?
以下为保留选中状态的表体行的UI代码
?
@Overrideprotected void initSelfData() {getBillListPanel().setMultiSelect(true);getBillListPanel().getHeadBillModel().removeRowStateChangeEventListener();getBillListPanel().getHeadBillModel().addRowStateChangeEventListener(new HeadRowStateListener());}private class HeadRowStateListener implements IBillModelRowStateChangeEventListener{public void valueChanged(RowStateChangeEvent e){getBufferData().setCurrentRow(e.getRow());BillModel model = getBillListPanel().getBodyBillModel();IBillModelRowStateChangeEventListener l = model.getRowStateChangeEventListener();model.removeRowStateChangeEventListener();if (e.isSelectState()) {getBillListPanel().getChildListPanel().selectAllTableRow();}else{getBillListPanel().getChildListPanel().cancelSelectAllTableRow();}model.addRowStateChangeEventListener(l);getBillListPanel().updateUI();}}@Overridepublic void update(Observable o, Object arg) {// TODO Auto-generated method stubif (beforeUpdate()) {try {if (isListPanelSelected()){setListBodyData();int nrow=getBufferData().getCurrentRow();if (!getBillListPanel().setBodyModelData(nrow)){getBillListPanel().setBodyModelDataCopy(nrow);}//getBillListPanel().repaint();int maxSelIndex=getBillListPanel().getHeadTable().getSelectionModel().getMaxSelectionIndex();int minSelIndex=getBillListPanel().getHeadTable().getSelectionModel().getMinSelectionIndex();if(nrow>=0&&maxSelIndex==minSelIndex){getBillListPanel().addEditListener(null);getBillListPanel().getHeadTable().getSelectionModel().setSelectionInterval(nrow,nrow);getBillListPanel().addEditListener(this);}}elsesetCardUIData(getBufferData().getCurrentVO());this.getBillCardPanel().updateValue();//设置单据状态updateBtnStateByCurrentVO();} catch (Exception e) {e.printStackTrace();showErrorMessage(e.getMessage());}if(getUIControl() instanceof ITableTreeController){ setTableToTreeTable();}}afterUpdate();}?
?
?
主要是重新定义表头的行选中事件以及修改update方法