默认情况下,表单的数据模型创建及赋值由BOS基类实现,一些特殊场景需要在插件中动态创建及赋值绑定。

下面为动态表单“付款单明细列表”的表单插件,PurchaseServiceHelper.GetPayBillList获取要展示的数据,重写CreateNewData构建表单数据模型。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.Core.Metadata.StateTracker;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Bill;
using Kingdee.BOS.Orm;
using Kingdee.BOS.Orm.Metadata.DataEntity;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.JSON;
using Kingdee.BOS.Core.Const;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.BarElement;
using Kingdee.BOS.Core.SqlBuilder;
using Kingdee.K3.SCM.ServiceHelper;
namespace Kingdee.K3.SCM.Purchase.Business.PlugIn
{public class PurPayBill : AbstractDynamicFormPlugIn{DynamicObjectCollection payBillData = null;public override void OnInitialize(BOS.Core.DynamicForm.PlugIn.Args.InitializeEventArgs e){if (e.Paramter.GetCustomParameter("SessionPayKey") == null){return;}string sessionKey = e.Paramter.GetCustomParameter("SessionPayKey").ToString();// 读取数据,返回的数据包,包含了必要的属性,可以直接使用payBillData = PurchaseServiceHelper.GetPayBillList(this.Context, Convert.ToInt64(sessionKey));}public override void CreateNewData(BOS.Core.DynamicForm.PlugIn.Args.BizDataEventArgs e){DynamicObjectType dtType = this.View.BusinessInfo.GetDynamicObjectType();EntryEntity recEntity = (EntryEntity)this.View.BusinessInfo.GetEntity("FPayDetailList");if (payBillData != null){DynamicObject objData = new DynamicObject(dtType);DynamicObject recObj = null;int seq = 1;foreach (DynamicObject dy in payBillData){recObj = new DynamicObject(recEntity.DynamicObjectType);recEntity.DynamicProperty.GetValue<DynamicObjectCollection>(objData).Add(recObj);recObj["BillNo"] = Convert.ToString(dy["FBILLNO"]);     //预收单号recObj["CURRENCY"] = dy["FCURRENCY"];   recObj["Date"] = dy["FDATE"];recObj["Seq"] = seq;       //行号recObj["Amount"] = dy["FREALPAYAMOUNTFOR"];              //实付金额recObj["ORGNAME"] = dy["FORGNAME"];              //结算组织seq++;}e.BizDataObject = objData;}}public override void AfterBindData(EventArgs e){int count = this.View.Model.GetEntryRowCount("FPayDetailList");for (int i = 0; i < payBillData.Count(); i++){this.View.GetFieldEditor<DecimalFieldEditor>("FAmount", i).Scale = Convert.ToInt16(payBillData[i]["FAMOUNTDIGITS"]);//设置精度}}}
}

转载于:https://www.cnblogs.com/fyq891014/p/4188810.html

插件中对动态表单数据模型进行赋值实现动态表单数据绑定相关推荐

  1. 如何给FormPanel表单中的元素赋值以及获取表单元素值

    1.定义表单元素的name属性如下 var HLV = new Ext.form.TextField({fieldLabel: '汇率',name:'EXCHANGERATE',anchor: '30 ...

  2. java中显示动态信息的方法_java里的动态表单技术

    最近的一个项目,由于客户的需求等信息不确定,为了降低以后修改的成本及产品的推广考虑到动态表单技术,之前也一直在考虑到动态表单技术,毕竟在delphi里已经实现过了,由于我们采用的hibernate的执 ...

  3. mysql动态表单设计与实现_动态表单的数据库结构设计

    利用在线编辑器设计的表单,包含输入框,明细表(动态添加行)等需要存储到数据库的信息,现在有三种思路: 1.一个表单对应数据库的一张或多张物理表(主从表),这种设计在很多业务的情况下,其数据库的物理表会 ...

  4. ONLYOFFICE文档V7.2现已发布————插件市场、实时查看器、连写、全新表单字段、UI 更新等

    ONLYOFFICE文档V7.2现已发布 ----插件市场.实时查看器.连写.全新表单字段.UI 更新等 我们已在最新版本的在线编辑器中提供了多种实用性改进,比如:轻松的插件安装流程.实时查看器.支持 ...

  5. html5 前端动态加载后端,Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)...

    vue+element的动态表单,动态表格(后端发送配置,前端动态生成) 动态表单生成 elementui官网引导 关键配置 template中,form和form-item的写法和绑定 data里的 ...

  6. html实现动态多表单输入,提交多个动态添加的html表单

    我正在构建一个可以动态添加表单的功能.不是表单字段,而是一个完整的单独的HTML表单.提交多个动态添加的html表单 我使用JS添加它们. add_email_template $('#add_ema ...

  7. java mvc中重复提交表单,spring mvc 防止重复提交表单的两种方法,推荐第二种

    第一种方法:判断session中保存的token 比较麻烦,每次在提交表单时都必须传入上次的token.而且当一个页面使用ajax时,多个表单提交就会有问题. 注解Token代码: package c ...

  8. 如何动态在maven插件中加载项目及第三方类

    在maven插件中是加载不到目标项目的类及目标项目引用的第三方所提供的类的,需要通过动态读取目标项目所依赖的classpath并根据这些classpath生成相应的url数组,以这个url数组作为参数 ...

  9. CDR插件开发之CPG插件016 -【实例】在CPG插件中动态导出图像到临时文件夹

    在上篇文章中,讲解了文档事件在CPG插件中的开发方式和使用例子.本文在文档事件的基础上,编写一个实用的例子:当文档打开后,自动导出当前页面的图像到系统临时文件夹下面的子文件夹中,子文件夹按照日期动态创 ...

最新文章

  1. jsmodern_jQuery视频播放插件jsModern(修改版)
  2. 3月16日 winform
  3. PROC系列之---/proc/pid/stat
  4. Web安全实践(14)嗅探,arp欺骗,会话劫持与重放攻击(下)
  5. 解决pip安装pygal在TensorFlow环境下调用失败问题
  6. ArcGIS如何利用已有坐标转成点(arcgis生成、python生成)
  7. 基于tensorflow实现图像分类——理解神经网络运作过程、tensorflow入门
  8. 网络基础知识(面试基础)
  9. #单机只打开一次窗口_单窗口单IP和单机单IP哪个好?
  10. 您知道数据中心的最佳温度是多少吗?
  11. jQuery源码系列(一)
  12. matlab拟合曲线poly交点,matlab 离散曲线求交点
  13. 根据身份证号 计算具体年龄
  14. 八叉网的神奇明链外链技术
  15. pc端下载微信视频号中的视频
  16. IDEA插件系列(67):ReadHub插件——新闻阅读器
  17. 找众数的算法代码c语言,寻找众数算法
  18. 通过Cookie跳过登录验证码
  19. PHPMYSQL物联网监控系统Web端
  20. 2018最新Java实战开发今日头条资讯网站

热门文章

  1. 人生第一次被迫转行!实现月薪16K!勤能补拙是良训,一分耕耘一分才
  2. oracle 认证考试题目,Oracle OCP 19c 认证1Z0-082考试题库(第1题)
  3. java程序员期望薪资_11月程序员平均薪资达14327元,薪资最高的居然不是JAVA?
  4. springboot项目层次结构_Springboot项目结构Springboot项目结构
  5. koa2后端和php后端,vue+koa2+mongo前后端分离restful,配置和部署到云
  6. linux使用oracal11g详细过程,很给力的linux下Oracle11g的安装过程及图解.doc
  7. ResNeXt核心思想
  8. 基于深度残差网络的番茄叶片病害识别方法
  9. mysql通用mapper_通用Mapper(Mybatis)
  10. 删除重复行 oracle,Oracle删除重复行传智播客