nc65 根据条件设置是否能够编辑

1.效果截图和说明:当是否正常情景参数为“是”时,正常情景参数值可以被编辑,为“否”时,不能被编辑


2.该功能要考虑到编辑修改“是否”的状态对其控制项的影响,所以该功能要用到表体编辑前和编辑后事件,代码如下:

public class BodyBeforeEditHandler implements
		IAppEventHandler<CardBodyBeforeEditEvent> {

	@Override
	public void handleAppEvent(CardBodyBeforeEditEvent e) {
		if (e.getKey().equals("nor_para")) {
			setCellEditable(e);
		}
			e.setReturnValue(UFBoolean.TRUE.booleanValue());
	}
	
	/**
	 * 设置是否可以编辑
	 * @param e
	 */
	private void setCellEditable(CardBodyBeforeEditEvent e) {
		Integer is_nor_para = Integer.parseInt(e.getBillCardPanel().getBodyItem("is_nor_para").getValueObject().toString());
		if(0 == is_nor_para){
			e.getBillCardPanel().getBillModel().setCellEditable(e.getRow(), "nor_para", false);
		}
		if(1 == is_nor_para){
			e.getBillCardPanel().getBillModel().setCellEditable(e.getRow(), "nor_para", true);
		}
	}
}
public class BodyAfterEditHandler implements
		IAppEventHandler<CardBodyAfterEditEvent> {
	
	private DefaultExceptionHanler exceptionHandler;
	
	public DefaultExceptionHanler getExceptionHandler() {
		return exceptionHandler;
	}

	public void setExceptionHandler(DefaultExceptionHanler exceptionHandler) {
		this.exceptionHandler = exceptionHandler;
	}

	@Override
	public void handleAppEvent(CardBodyAfterEditEvent e) {
			try{
				if (e.getKey().equals("is_nor_para")) {
					setCellEditable(e);
				}
			}catch(Exception e1){
				getExceptionHandler().handlerExeption(e1);
			}
		
	}
	/**
	 * 设置是否可以编辑
	 * @param e
	 */
	private void setCellEditable(CardBodyAfterEditEvent e) {
		Integer is_nor_para = Integer.parseInt(e.getBillCardPanel().getBodyItem("is_nor_para").getValueObject().toString());
		if(0 == is_nor_para){
			e.getBillCardPanel().getBillModel().setValueAt(null, e.getRow(), "nor_para");//清除已填内容
			e.getBillCardPanel().getBillModel().setCellEditable(e.getRow(), "nor_para", false);//修改为不可编辑
		}
		if(1 == is_nor_para){
			e.getBillCardPanel().getBillModel().setCellEditable(e.getRow(), "nor_para", true);
		}
	}
}

3.在对应的xml中配置编辑前后事件即可

<!-- 表体编辑后事件 -->
                 <bean class="nc.ui.pubapp.uif2app.event.EventHandlerGroup">
                    <property name="event" value="nc.ui.pubapp.uif2app.event.card.CardBodyAfterEditEvent" />
                    <property name="handler">
                        <bean class="nc.ui.frm_alm.stress_test_plan.ace.handler.BodyAfterEditHandler" >
                        	<property name="exceptionHandler"><ref bean="exceptionHandler" /></property>
                        </bean>
                    </property>
                </bean>
                <!-- 表体编辑前事件 -->
				 <bean class="nc.ui.pubapp.uif2app.event.EventHandlerGroup">
                    <property name="event" value="nc.ui.pubapp.uif2app.event.card.CardBodyBeforeEditEvent" />
                    <property name="handler">
                        <bean class="nc.ui.frm_alm.stress_test_plan.ace.handler.BodyBeforeEditHandler" />
                    </property>
                </bean>

猜你喜欢

转载自blog.csdn.net/u014714841/article/details/80355739