1.新建类库解决方案,引入命名空间,同时引入要添加UI Form的WebPart(在Portal\UILib目录下)

2.继续UFSoft.UBF.UI.Custom.ExtendedPartBase,重写AfterInit()方法,代码如下,便于添加下拉列表按钮,在原单据中UI先新增一下拉按钮;添加按钮绑定的父控件,如本例中的下拉列表控件,可以UBF设计工具中的控件名属性ID来查找,本例中绑定的下拉列表按钮:DropDownButton2,若是系统标准的单据,建议查看系统的源码生成的ID相匹配

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UFSoft.UBF.UI.ControlModel;
using UFSoft.UBF.UI.Engine.Builder;
using UFSoft.UBF.UI.MD.Runtime.Common;
using UFSoft.UBF.UI.WebControlAdapter;
using UFSoft.UBF.UI.WebControls;namespace GiftDocUIPlug
{class GiftDocUIPlugExtend : UFSoft.UBF.UI.Custom.ExtendedPartBase{private Homa.test.ch01.GifDocUIModel.GiftDocUIFormWebPart webPart;public override void AfterInit(UFSoft.UBF.UI.IView.IPart Part, EventArgs args){base.AfterInit(Part, args);if (Part == null || Part.Model == null){return;}webPart = Part as Homa.test.ch01.GifDocUIModel.GiftDocUIFormWebPart;if (webPart == null){return;}//功能区添加按钮//(1)实例化按钮IUFButton btnExportXLS = new UFWebButtonAdapter();btnExportXLS.Text = "导出XLS";btnExportXLS.ID = "btnExportXLS";btnExportXLS.AutoPostBack = true;//(2)加入功能栏Card中IUFCard card = (IUFCard)Part.GetUFControlByName(Part.TopLevelContainer, "Card0");card.Controls.Add(btnExportXLS);//(3)设置按钮在容器中的位置CommonHelper.Layout(card, btnExportXLS, 0, 0);//一般为从左往右按钮个数乘以2//(4)绑定按钮事件btnExportXLS.Click += new EventHandler(btnExportXLS_Click);//功能区下拉列表添加按钮//(1)实例化下拉按钮IUFMenu MenuPrintBatch = new UFWebMenuAdapter();MenuPrintBatch.ID = "btnDdlExportXLS";MenuPrintBatch.Text = "导出XLS";MenuPrintBatch.AutoPostBack = true;//(2)找到功能区对应的下拉列表按钮组IUFDropDownButton BtnOpreator = (IUFDropDownButton)webPart.GetUFControlByName(Part.TopLevelContainer, "DropDownButton2");//(3)将下拉按钮添加到对应的组MenuPrintBatch.ItemClick += new MenuItemHandle(btnExportXLS_Click);//(4)绑定按钮事件
            BtnOpreator.MenuItems.Add(MenuPrintBatch);//在工具栏上添加按钮//(1)实例化按钮IUFButton btnBatchMO = new UFWebButtonAdapter();btnBatchMO.ID = "btnBatchMO";btnBatchMO.AutoPostBack = true;//(2)找到工具栏控件IUFToolbar _Toolbar = (IUFToolbar)webPart.FindControl("Toolbar2");//(3)将按钮添加到工具栏btnBatchMO = UIControlBuilder.BuilderToolbarButton(_Toolbar, "True", "btnBatchMO", "True", "True", 45, 28, "19", "", true, false, "36BA88E0-FC28-402e-B9BA-3745A6771687", "36BA88E0-FC28-402e-B9BA-3745A6771687", "9307E981-85AA-4f19-ADB7-340D159F4A01");UIControlBuilder.SetButtonAccessKey(btnBatchMO);btnBatchMO.UIModel = Part.Model.ElementID;btnBatchMO.Action = "";btnBatchMO.Text = "导出XLS";((UFWebToolbarAdapter)_Toolbar).Items.Add(btnBatchMO as System.Web.UI.WebControls.WebControl);//(4)绑定按钮事件btnBatchMO.Click += new EventHandler(btnExportXLS_Click);}private void btnExportXLS_Click(object sender, EventArgs e){webPart.Model.ErrorMessage.Message = "你点击了UI插件按钮!";}}
}

插件代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UFSoft.UBF.UI.ControlModel;namespace GiftDocUIPlug
{class CommonHelper{/// <summary>/// 设置控件在卡片容器中的布局/// </summary>/// <param name="container">卡片容器</param>/// <param name="ctrl">增加的控件</param>/// <param name="x">布局横坐标</param>/// <param name="y">布局纵坐标</param>public static void Layout(UFSoft.UBF.UI.ControlModel.IContainer container, UFSoft.UBF.UI.ControlModel.IUFControl ctrl, uint x, uint y){Layout(container, ctrl, x, y, 1, 1, System.Web.UI.WebControls.Unit.Pixel(0), System.Web.UI.WebControls.Unit.Pixel(0), true);}/// <summary>/// 设置控件在卡片容器中的布局/// </summary>/// <param name="container">卡片容器</param>/// <param name="ctrl">增加的控件</param>/// <param name="x">布局横坐标</param>/// <param name="y">布局纵坐标</param>/// <param name="width">控件宽</param>/// <param name="height">控件高</param>public static void Layout(UFSoft.UBF.UI.ControlModel.IContainer container, UFSoft.UBF.UI.ControlModel.IUFControl ctrl, uint x, uint y, int width, int height){Layout(container, ctrl, x, y, 1, 1, System.Web.UI.WebControls.Unit.Pixel(width), System.Web.UI.WebControls.Unit.Pixel(height), false);}/// <summary>/// 设置控件在卡片容器中的布局/// </summary>/// <param name="container">卡片容器</param>/// <param name="ctrl">增加的控件</param>/// <param name="x">布局横坐标</param>/// <param name="y">布局纵坐标</param>/// <param name="xspan">单元格横向跨度</param>/// <param name="yspan">单元格纵向跨度</param>/// <param name="width">控件宽</param>/// <param name="height">控件高</param>/// <param name="isAutoSize">是否自适应大小</param>public static void Layout(UFSoft.UBF.UI.ControlModel.IContainer container, UFSoft.UBF.UI.ControlModel.IUFControl ctrl, uint x, uint y, int xspan, int yspan,System.Web.UI.WebControls.Unit width, System.Web.UI.WebControls.Unit height, bool isAutoSize){UFSoft.UBF.UI.Controls.IGridLayout gl = container.Layout as UFSoft.UBF.UI.Controls.IGridLayout;if (gl == null) return;UFSoft.UBF.UI.WebControls.GridLayoutInfo glInfo = new UFSoft.UBF.UI.WebControls.GridLayoutInfo((uint)x, (uint)y, (uint)xspan, (uint)yspan, width, height);glInfo.AutoSize = isAutoSize;gl.Controls.Add((System.Web.UI.Control)ctrl, glInfo);}public static IUFControl FindControl(UFSoft.UBF.UI.IView.IPart Part, string parentControl, string control){IUFCard card = (IUFCard)Part.GetUFControlByName(Part.TopLevelContainer, parentControl);if (card == null)return null;foreach (IUFControl ctrl in card.Controls){if (ctrl.ID.Equals(control, StringComparison.OrdinalIgnoreCase)){return ctrl;}}return null;}}
}

CommonHelper类方法

3.配置文件
配置文件WebPartExtend以作为前缀命名,如本例中:WebPartExtend_GiftDocUIPlug.config,配置内容如下
主要配置ExtendedPart节点属性值
(1)parentPartFullName:引用的UIForm WebPart的dll
(2)extendedPartFullName:命名空间+类名

(3)extendedPartAssemblyName:程序集

<?xml version="1.0" encoding="utf-8" ?>
<configuration><configSections><section name="WebPartExtend" type="UFSoft.UBF.UI.Custom.ExtendedPartSection, UFSoft.UBF.UI.FormProcess" /></configSections><WebPartExtend><ExtendedPart parentPartFullName="Homa.test.ch01.GifDocUIModel.GiftDocUIFormWebPart" extendedPartFullName="GiftDocUIPlug.GiftDocUIPlugExtend" extendedPartAssemblyName="GiftDocUIPlug.dll"></ExtendedPart></WebPartExtend>
</configuration>

4.部署发布
(1)配置文件:拷贝至Portal根目录下
(2)dll文件拷贝至Portal\UILib目录下

5.最后运行下单据效果

转载于:https://www.cnblogs.com/myjacky/p/4603151.html

插件开发-UI插件开发相关推荐

  1. 前端学习(2843):UI插件开发

  2. eclipse java 插件开发_Eclipse插件开发之基础篇(2) 第一个Eclipse插件

    在Eclipse中使用PDE(Plugin Development Environment)进行插件开发.在PDE中为大家准备了几个模板供大家参考.第一步咱们先利用模板制作一个简单的插件作为和PDE的 ...

  3. office插件开发_[插件开发]用VB6开发一个插件同时给32位和64位Office使用

    VB6只能编译32位DLL 目前已经有部分用户开始使用64位Office了 用VB6给64位Office写插件将是一个痛苦的事 所以很多开发者都望而却步,在没有转.net正营的前提下,都会告知用户,产 ...

  4. kong组件_Kong插件开发工具包

    Kong插件开发工具包 插件开发工具包(或称 PDK),是一组 Lua 方法和变量,插件可以使用这些方法和变量实现自己的逻辑,PDK 最初在 Kong 0.14.0 中发布,PDK 保证从1.0.0版 ...

  5. 3.1 ElasticSearch River插件开发

    参考资料: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-plugins.html htt ...

  6. 火狐(firefox)浏览器插件开发简明教程

    手头有一个抓取页面数据的小项目,之前一直使用 Bookmarklet 书签脚本的方式来实现的.最近发现不能用了,因为涉及到要在抓取页面插入远程 JS 脚本,触发了最新浏览器的内容保护策略(Conten ...

  7. Qt插件开发总结5--主界面嵌入插件UI

    文章目录 一.前言 二.效果展示 三.嵌入插件UI 1.插件接口文件添加UI指针 2.插件子项目工程建立UI类 3.插件类中创建UI类.使UI指针指向创建的UI类 4.插件元信息中添加widget键值 ...

  8. Unity UGUI NGUI 模型 粒子特效 三者之间 渲染层级设置

    目录 1.介绍两大UI插件NGUI和UGUI  2.unity渲染顺序控制方式  3.NGUI的控制  4.UGUI的控制  5.模型深度的控制  6.粒子特效深度控制  7.NGUI与模型和粒子特效 ...

  9. 一文说透小程序插件及其作用价值

    最近工作接触小程序插件比较多,就想着不如跟大家系统分享一下小程序插件相关的内容. 首先,我们要先弄清楚小程序插件究竟是什么? 简单来说,小程序插件就是可被添加到小程序内直接使用的功能组件.插件依附于主 ...

最新文章

  1. MWC 2015:Peel全面升级为用户打造智能家居控制新体验
  2. golang if 条件判断语句 简介
  3. 执行srvctl报错 :error while loading shared libraries: libpthread.so.0:
  4. 【Android 逆向】Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )
  5. Spring Boot中自动配置原理以及日志的基本使用
  6. 为什么promise就是微队列?setTimeOut就是宏队列?
  7. Redhat_as4_oracle10g自启动脚本设置
  8. 斐讯k2路由虚拟服务器,斐讯K2P不死uboot分享带dhcp server功能
  9. 表情键盘 EmojiKeyboard
  10. 闭环控制步进电机对比传统开环控制的优点
  11. Day 15 正则表达式
  12. 计算机网络——IPV6基础知识
  13. centOS7 单机 mysql 5.7.24 主从
  14. 蓝牙学习笔记之建立蓝牙连接的过程
  15. Yolov5代码详解——detect.py
  16. rails kaminari 分页插件 find_by_sql查询
  17. python内置函数布尔值bool用法详解
  18. Linux设备与驱动学习之----什么是驱动
  19. [Python]PDF文件与图片转换(PyMuPDF)及转PPT
  20. ffmpeg实战之ffmpeg命令提取像素格式和PCM数据

热门文章

  1. SEL selector (二)
  2. nullnull使用PL/SQL获取创建用户的语句
  3. python requests 10041报错_Python-Requests1-批量登录获取uid
  4. brainfu*k语言执行
  5. python删除列表中字符串_python - 删除字符串中的字符列表
  6. Matlab功率谱估计
  7. python创建一个包,如何从python包创建一个osx应用程序/ dmg?
  8. gin 生成api文档_gin-swagger 生成RESTful风格OpenAPI文档
  9. 计算机图形图像电影论文,计算机图形图像绘制技术地现状分析及应用发展.doc...
  10. 生产上oracle扩展表空间,oracle基于裸设备(raw device)扩充表空间