首页 > 技术文章 > NW开发教程系列四:单表体

aimer311 2014-03-19 15:26 原文

   单表体页面实际上也可以使用单表头的模式进行开发,但是为了发挥可编辑表格的便捷性,有些页面推荐使用这种方式进行开发。好处就是不需要切换到表单页面对数据进行修改。如下图所示:

同样省略前面的开发步骤。

7、Service开发

/**
 * 产品,单表体
 * 
 * @author xuqc
 * @date 2013-10-17 下午02:36:03
 */
@Service
public class T208Service extends AbsToftServiceImpl {

	private AggregatedValueObject billInfo;

	public AggregatedValueObject getBillInfo() {
		if(billInfo == null) {
			billInfo = new HYBillVO();
			VOTableVO vo = new VOTableVO();

			vo.setAttributeValue(VOTableVO.BILLVO, HYBillVO.class.getName());
			vo.setAttributeValue(VOTableVO.HEADITEMVO, ProductVO.class.getName());
			vo.setAttributeValue(VOTableVO.PKFIELD, ProductVO.PK_PRODUCT);
			billInfo.setParentVO(vo);
		}
		return billInfo;
	}
}

8、Controller开发

/**
 * 单表体
 * 
 * @author xuqc
 * @date 2013-10-17 下午02:55:09
 */
@Controller
@RequestMapping(value = "/busi/scene/t208")
public class T208Controller extends AbsToftController {

	@Autowired
	private T208Service t208Service;

	@Override
	public T208Service getService() {
		return t208Service;
	}

}

9、对应的jsp开发

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<html>
	<head>
		<%@ include file="/common/header.jsp"%>
	</head>
	<body>
	<nw:Bill templetVO="${templetVO}" bodyGridsPagination="true" />
	</body>
	<script type="text/javascript">
	//单表体档案,BodyToolbar已经默认增加了一些按钮,如果要自己增加一些按钮,那么继承该类
	${moduleName}.appUiConfig.toolbar = new uft.jf.BodyToolbar();
	var app = new uft.jf.ToftPanel(${moduleName}.appUiConfig);
	
	/**
	*表体编辑后事件
	*@param e 事件对象,通过这个参数可以得到以下值:
	*var record=e.record; 当前编辑的行对象
	var row = e.row; 当前编辑的行号
	var grid = e.grid; 当前编辑的表格
	var column = grid.originalColumns[e.column];//当前编辑的列对象
	var fieldName=e.field; 当前编辑的列的名称
	var value=e.value; 当前编辑的单元格编辑后的值
	var originalValue=e.originalValue; 当前编辑的单元格编辑前的值
	*/
	function afterEditBody(e){
		alert(1);
		if(e.field == 'categoryname'){
			//uft.Utils.setColumnHidden('demo_product_detail',{'productprice':true});
		}else if(e.field =='productprice'){
			var grid = Ext.getCmp('demo_product_detail');
			var editor = uft.Utils.getColumnEditor(grid,'vmemo');//vmemo列是一个下拉组件
			editor.addExtendParams({p:1});
		}
	}
	</script>
	<%@ include file="/common/footer.jsp"%>
</html>

具体的示例可以参考:http://xuqc.fangwei.name:9080/demo-webapp administrator/143305

推荐阅读