金蝶EAS,打开新页面,传递参数,KDTable表格数据填充

本文介绍了一种在两个页面间传递数据并填充到新页面的方法。通过在新页面的onLoad方法中获取前一页面提供的参数,再利用这些参数填充当前页面的数据表格。具体实现包括从前一页面获取数据、解析数据并在新页面展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

业务场景:打开新页面,并在新页面填充数据。

可以在新页面的onLoad方法中获取前一页面提供的参数,然后解析当前页面的表格,填充数据。

/**
 * 加载界面时,填充拆分明细数据
 */
@Override
public void onLoad() throws Exception {
	
	super.onLoad();
	setUITitle("拆分明细");
	SplitBillInfo billModel = (SplitBillInfo) getUIContext().get("billModel");
	fillData(billModel); //填充数据
	
}

/**
 * 填充界面数据
 */
private void fillData(SplitBillInfo billModel) {
	
	tblMain.checkParsed(); //重新解析表格
	SplitBillEntryCollection entrys = billModel.getEntrys(); //分录集合
	if(entrys == null || entrys.isEmpty()) return;
	for(int i = 0; i < entrys.size(); i++){
		
		SplitBillEntryInfo entry = entrys.get(i); //分录对象
		SplitBillEntryDEntryCollection details = entry.getDEntrys(); //子分录集合
		
		for(int j = 0; j < details.size(); j++){
			
			IRow row = tblMain.addRow();
			SplitBillEntryDEntryInfo detail = details.get(j); //子分录对象
			AccountViewInfo account = detail.getAccount();
			row.getCell("account").setValue(account.getNumber() + "," + account.getName()); //报账科目
			row.getCell("costOrg").setValue(detail.getCostOrg().getName()); //费用承担部门
			row.getCell("amount").setValue(detail.getAmount()); //报账金额
			row.getCell("orgUnit").setValue(detail.getOrgUnit().getName()); //下辖机构
			row.getCell("splitAmount").setValue(detail.getSplitAmount()); //拆分金额
			row.getCell("remark").setValue(detail.getRemark()); //备注
			
		}
		
	}
	
	// 添加合计
	IRow footRow = tblMain.addRow();
	footRow.getCell("account").setValue("合计");
	footRow.getCell("splitAmount").setValue(billModel.getTotal()); //拆分金额合计
	footRow.getStyleAttributes().setBold(true);
	
}

前一页面,打开新页面,传递参数对应的代码:

/**
 * 拆分明细查看
 */
@SuppressWarnings("unchecked")
@Override
public void actionDetail_actionPerformed(ActionEvent e) throws Exception {
	
	List ids = getSelectedIdValues();
	if(ids == null || ids.isEmpty()){
		MsgBox.showInfo(this, "请选择记录行!");
		abort();
	}
	
	String billId = (String) ids.get(0);
	EntityViewInfo view = new EntityViewInfo();
	SelectorItemCollection selector = new SelectorItemCollection();
	selector.add(new SelectorItemInfo("*"));
	selector.add(new SelectorItemInfo("entrys.DEntrys.*"));
	selector.add(new SelectorItemInfo("entrys.DEntrys.account.number"));
	selector.add(new SelectorItemInfo("entrys.DEntrys.account.name"));
	selector.add(new SelectorItemInfo("entrys.DEntrys.costOrg.name"));
	selector.add(new SelectorItemInfo("entrys.DEntrys.orgUnit.name"));

	FilterInfo filter = new FilterInfo();
	filter.getFilterItems().add(new FilterItemInfo("id", billId));
	view.setSelector(selector);
	view.setFilter(filter);
	ISplitBill service = SplitBillFactory.getRemoteInstance();
	SplitBillCollection coll = service.getSplitBillCollection(view);
	
	UIContext uiContext = new UIContext(ui); //上下文
        uiContext.put("billModel", coll.get(0));
        IUIWindow win = null;
        String uiFactoryName = UIFactoryName.NEWWIN; //NEWWIN时打开新窗口
        String className = SplitBillDetailUI.class.getName(); //UI界面对应的类名,如:DemoListUI.class.getName()
    
        win = UIFactory.createUIFactory(uiFactoryName).create(className, uiContext);
        win.show();
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值