在生产订单单据体增加了设备字段,物料清单单据头也增加了设备字段,想实现在生产订单中选取了物料和设备后自动带出 物料和设备相同的物料清单因此在datachange事件中写了如下代码
public override void DataChanged(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.DataChangedEventArgs e)
{
base.DataChanged(e);
if (e.Key == "FMaterialId" || e.Key == "FMachine")
{
int FMaterialID = 0;
int FMachineID = 0;
if (this.Model.GetValue("FMaterialId") == null)
return;
FMaterialID = Convert.ToInt32(((DynamicObject)this.Model.GetValue("FMaterialId"))["ID"]);
if (this.Model.GetValue("FMachine") != null)
FMachineID = Convert.ToInt32(((DynamicObject)this.Model.GetValue("FMachine"))["ID"]);
DataSet ds = Kingdee.BOS.ServiceHelper.DBServiceHelper.ExecuteDataSet(this.Context, string.Format(" exec proc_GetBOM {0},{1}", FMaterialID, FMachineID));
this.Model.SetValue("FBomId",Convert.ToInt32( ds.Tables[0].Rows[0]["FBOMID"]), e.Row);
this.View.UpdateView("FBomId", e.Row);
}
}
执行后发现赋值不了,跟踪代码发现直行到SetValue后,是赋值成功了的,因为赋值后他会再2次触发BOM字段的 datachange事件,在第一次触发是能发现是我写入的值,第二次变成null了;
然后我直接在生产订单上增加按钮,通过点击按钮使用SetValue方法是能成功对BOM字段赋值的!
生产订单本身自带了6个标准产品的插件,里面也有触发datachange事件,是否我们开发的插件和标准插件有冲突
怎么解决呢?
推荐阅读