关于DataChanged与值更新事件顺序。
1,857次浏览
编辑于2016年11月24日 15:45:04
各位大神好,
目前遇见这个需求,在销售出库单上选取库存物料后,将该物料该批次的的入库数量合计并填写到销售出库的分录上面。
目前用的bill插件的DataChanged实现,但是发现DataChanged里面批号是空的。搜索了一下帖子发现DataChanged事件相比值更新事件顺序滞后。
请教一下如何实现该功能?
代码如下:
public override void DataChanged(DataChangedEventArgs e)
{
base.DataChanged(e);
if (e.Field.Key.EqualsIgnoreCase("FMaterialID"))
{
int FRow = e.Row;
var FMaterialID = this.View.Model.GetValue("FMaterialID", FRow);
if (FMaterialID.IsNullOrEmptyOrWhiteSpace())
{
return;
}
var FItemID = (FMaterialID as DynamicObject)["ID"].ToString();
var FLot = this.View.Model.GetValue("FLOT", FRow);
StringBuilder Sql = new StringBuilder(string.Format(@"select isnull(SUM(t2.FREALQTY),0) as FQty from t_STK_InStock t1
inner join T_STK_INSTOCKENTRY t2 on t1.FID = t2.FID
where FDOCUMENTSTATUS = 'C'
and t2.FMATERIALID= '{0}' and t2.FLOT = '{1}'", FItemID, FLot));
DataSet obj = DBServiceHelper.ExecuteDataSet(this.Context, Sql.ToString());
var FQty = obj.Tables[0].Rows[0]["FQty"];
this.View.Model.SetValue("FPOQty", FQty);
this.View.UpdateView("FPOQty");
}
}
Flot在DataChanged里一直是空的。但是实际上是有值得,应该是DataChanged事件的时候该字段还没有被赋值.
目前遇见这个需求,在销售出库单上选取库存物料后,将该物料该批次的的入库数量合计并填写到销售出库的分录上面。
目前用的bill插件的DataChanged实现,但是发现DataChanged里面批号是空的。搜索了一下帖子发现DataChanged事件相比值更新事件顺序滞后。
请教一下如何实现该功能?
代码如下:
public override void DataChanged(DataChangedEventArgs e)
{
base.DataChanged(e);
if (e.Field.Key.EqualsIgnoreCase("FMaterialID"))
{
int FRow = e.Row;
var FMaterialID = this.View.Model.GetValue("FMaterialID", FRow);
if (FMaterialID.IsNullOrEmptyOrWhiteSpace())
{
return;
}
var FItemID = (FMaterialID as DynamicObject)["ID"].ToString();
var FLot = this.View.Model.GetValue("FLOT", FRow);
StringBuilder Sql = new StringBuilder(string.Format(@"select isnull(SUM(t2.FREALQTY),0) as FQty from t_STK_InStock t1
inner join T_STK_INSTOCKENTRY t2 on t1.FID = t2.FID
where FDOCUMENTSTATUS = 'C'
and t2.FMATERIALID= '{0}' and t2.FLOT = '{1}'", FItemID, FLot));
DataSet obj = DBServiceHelper.ExecuteDataSet(this.Context, Sql.ToString());
var FQty = obj.Tables[0].Rows[0]["FQty"];
this.View.Model.SetValue("FPOQty", FQty);
this.View.UpdateView("FPOQty");
}
}
Flot在DataChanged里一直是空的。但是实际上是有值得,应该是DataChanged事件的时候该字段还没有被赋值.
推荐阅读