【BOS】--字段值更新服务端运行过程原创
金蝶云社区-eris
eris
17人赞赏了该文章 588次浏览 未经作者许可,禁止转载编辑于2022年11月29日 13:50:40

一、说明

     字段启用了“即时触发更新事件”属性后,当其输入值后失去焦点或按回车会立即向服务端发送值更新事件指令。

二、服务端运行时序图大概如下

image.png

三、相关的事件

1、表单插件值更新前事件 BeforeUpdateValue

2、表单插件值更新后事件 DataChanged

四、相关赋值代码

1、通过view赋值,相当于服务端解析全过程

int rowIndex = 0;

var dynView = this.View as IDynamicFormViewService;

dynView.UpdateValue("FieldKey", rowIndex, "newValue");

2、通过model赋值,不会运行字段上配置的值更新服务,需要另外调用

 this.Model.SetValue("FieldKey", "newValue", rowIndex);

//调用字段上的值更新服务 this.View.InvokeFieldUpdateService()

3、通过字段赋值,不会触发事件,不会调用各种服务,仅给数据包赋值

//假设field为简单字段

            int rowIndex = 0;

            var field = this.View.BillBusinessInfo.GetField("FieldKey");

            if(field is HeadEntity)

            {

                  field.DynamicProperty.SetValue(this.Model.DataObject, "newValue");

            }

            else if(field is EntryEntity)

            {

                var entryObjs = field.Entity.DynamicProperty.GetValue(this.Model.DataObject) as DynamicObjectCollection;

                var rowObj = entryObjs[rowIndex];

                field.DynamicProperty.SetValue(rowObj, "newValue");

            }


赞 17