氚云学习2——子表

子表前端常用方法:

方法作用
AddRow添加子表行数据
UpdataRow更新子表行数据
ClearRows清空子表行
GetCellManager获取子表的控件
this.D000001AccountList.ClearRows();//删除子表行,D000001AccountList为子表编码

//添加子表行
var subObjectId = $.IGuid();  //创建行ID
this.D000001AccountList.AddRow( subObjectId, {
        "D000001AccountList.F0000001": "赋值1",
        "D000001AccountList.F0000002": "赋值2",
        "D000001AccountList.F0000003": "赋值3"
 })

//更新(修改)子表数据
var currentRowId =this.F67c89495df154ab69ede62c1b61a0658.GetValue()[x].
ObjectId; //获取第x行子表ID,其中F67c89495df154ab69ede62c1b61a0658是子表ID                      this.F67c89495df154ab69ede62c1b61a0658.UpdateRow(   currentRowId, {
             "F67c89495df154ab69ede62c1b61a0658.jyjg": "赋值",
             "F67c89495df154ab69ede62c1b61a0658.dqgys": "赋值",
             "F67c89495df154ab69ede62c1b61a0658.cpmc": "赋值"
});
//循环遍历子表更新数据
var zibiao =this.F67c89495df154ab69ede62c1b61a0658.GetValue();
for(var i=0;i<zibiao.length;i++)
{
	var currentRow=ziaobiao.[i].ObjectId;
	this. F67c89495df154ab69ede62c1b61a0658.UpdataRow{
             "F67c89495df154ab69ede62c1b61a0658.jyjg": "赋值",
             });

}


子表和主表的控件其实都是BizObject,区别只在于子表的控件会一个父表ID:parentobjectid

在绑定change事件时不能绑定子表的某一行数据,而是要绑定这个子表对象
主表绑定时:

this.F0000001.BindChange('key',function(){
	alert)("主表绑定事件");
})

子表绑定时

//子表绑定事件只能绑定子表对象,不能绑定子表某一具体控件,想让某控件绑定事件,需要在function中增加回调参数res,判断具体的某一个数据 是否触发事件,
var parent=this;//因为BindChange是一个回调函数,在其内部使用this是function的this,而不是子表的this,因此要先把子表的this保存一下
this.F67c89495df154ab69ede62c1b61a0658.BindChange('key',function(res){
	if(res[0].DataField=="F67c89495df154ab69ede62c1b61a0658.F000002"){//DataField是获取控件对象
		alert(“子表控件绑定事件”);
		ver objectid=res[0].ObjectId;//获取当前行数据的对象ID
		//parent.F67c89495df154ab69ede62c1b61a0658.GetValue()[ 0 ].ObjectId;因为res就是BIndChange回调函数返回的子表对象,所以可以直接取到行数据,否则,可以GetValue获取行数据
		var cellObj = parent.F67c89495df154ab69ede62c1b61a0658.GetCellManager(   cellObj , "F67c89495df154ab69ede62c1b61a0658.F0000001" );//获取子表控件
		cellObj.SetReadonly(true);//获取到控件后,就可以对控件进行各种操作了
	}
	//此时,代码整体实现的就是当子表控件F0000002数据改变,那么alert,同时子表控件F0000001变更为只读。
});

实践

出库时校验数据

可以直接在表单设置——表单校验中设置校验条件。当校验不通过时,错误信息会提示,

子表数据的重复检验

主表的重复校验只需要在控件属性的不允许重复录入打钩即可,但子表的控件属性是没这个选项的,因此只能代码实现

Using system.data;
//在后端代码的OnSubmit中添加如下代码
H3.DataModel.BizObject[] child =(H3.DataModel.BizObject[]) this.Request.BizObject["F67c89495df154ab69ede62c1b61a0658"];
foreach(H3.DataModel.BizObject item in child){
	string repStr = string.Formet("select * from I_F67c89495df154ab69ede62c1b61a0658 where F0000001='{0}' ",item["F0000001"]+string.Empty)
	DataTable repDt=this.Engine.Query.QueryTable(repStr,null);
	if(repDt !=null&&repDt,Rows,Count>0){
		response.Infos.Add("子表数据重复提交");
	}
}
用业务规划向某一个目标的子表中添加数据

在一个任务发布中,每次添加任务日志。
创建一个表单:任务发布
主表文本:任务名称,任务发布人
子表文本:日志提交时间,提交人,
创建一个表单:日志提交
主表文本:日志内容,
主表其他内容:创建人,创建时间(这俩个是已有的控件),
关联表单:关联表单“任务发布”
即“任务发布”发布一个任务,然后“日志提交提交日志”,会把日志信息关联添加到任务发布的子表中去

在此,只介绍窗口界面的操作方式

在表单设置——业务规则——新建业务规则——选择表单生效时——切换到高级模式——
INSERT(选择任务发布的子表,子表的主表ID,关联表单,子表对象1,主表对象1,子表对象2,主表对象2…)
在次,任务发布的子表是目标表单,日志提交的表单是当前表单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值