NC表头改变时保留表体的选中状态

当UI处于多选状态时,表体行的选中状态不会保存下来。表头的选中行改变时,表体行将重新处于非选中状态。

 

以下为保留选中状态的表体行的UI代码

 

@Override
	protected 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();
		}
	}

@Override
	public void update(Observable o, Object arg) {
		// TODO Auto-generated method stub
		if (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);
					}
				}
				else
					setCardUIData(getBufferData().getCurrentVO());
			
				this.getBillCardPanel().updateValue();
				//设置单据状态
				updateBtnStateByCurrentVO();
			} catch (Exception e) {
				e.printStackTrace();
				showErrorMessage(e.getMessage());
			}
			if(getUIControl() instanceof ITableTreeController){
			    setTableToTreeTable();
			}
		}
		afterUpdate();
	}

 

 

 

主要是重新定义表头的行选中事件以及修改update方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值