插件开发-UI插件开发
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插件开发相关推荐
- 前端学习(2843):UI插件开发
- eclipse java 插件开发_Eclipse插件开发之基础篇(2) 第一个Eclipse插件
在Eclipse中使用PDE(Plugin Development Environment)进行插件开发.在PDE中为大家准备了几个模板供大家参考.第一步咱们先利用模板制作一个简单的插件作为和PDE的 ...
- office插件开发_[插件开发]用VB6开发一个插件同时给32位和64位Office使用
VB6只能编译32位DLL 目前已经有部分用户开始使用64位Office了 用VB6给64位Office写插件将是一个痛苦的事 所以很多开发者都望而却步,在没有转.net正营的前提下,都会告知用户,产 ...
- kong组件_Kong插件开发工具包
Kong插件开发工具包 插件开发工具包(或称 PDK),是一组 Lua 方法和变量,插件可以使用这些方法和变量实现自己的逻辑,PDK 最初在 Kong 0.14.0 中发布,PDK 保证从1.0.0版 ...
- 3.1 ElasticSearch River插件开发
参考资料: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-plugins.html htt ...
- 火狐(firefox)浏览器插件开发简明教程
手头有一个抓取页面数据的小项目,之前一直使用 Bookmarklet 书签脚本的方式来实现的.最近发现不能用了,因为涉及到要在抓取页面插入远程 JS 脚本,触发了最新浏览器的内容保护策略(Conten ...
- Qt插件开发总结5--主界面嵌入插件UI
文章目录 一.前言 二.效果展示 三.嵌入插件UI 1.插件接口文件添加UI指针 2.插件子项目工程建立UI类 3.插件类中创建UI类.使UI指针指向创建的UI类 4.插件元信息中添加widget键值 ...
- Unity UGUI NGUI 模型 粒子特效 三者之间 渲染层级设置
目录 1.介绍两大UI插件NGUI和UGUI 2.unity渲染顺序控制方式 3.NGUI的控制 4.UGUI的控制 5.模型深度的控制 6.粒子特效深度控制 7.NGUI与模型和粒子特效 ...
- 一文说透小程序插件及其作用价值
最近工作接触小程序插件比较多,就想着不如跟大家系统分享一下小程序插件相关的内容. 首先,我们要先弄清楚小程序插件究竟是什么? 简单来说,小程序插件就是可被添加到小程序内直接使用的功能组件.插件依附于主 ...
最新文章
- MWC 2015:Peel全面升级为用户打造智能家居控制新体验
- golang if 条件判断语句 简介
- 执行srvctl报错 :error while loading shared libraries: libpthread.so.0:
- 【Android 逆向】Android 权限 ( Android 逆向中使用的 android.permission 权限 | Android 系统中的 Linux 用户权限 )
- Spring Boot中自动配置原理以及日志的基本使用
- 为什么promise就是微队列?setTimeOut就是宏队列?
- Redhat_as4_oracle10g自启动脚本设置
- 斐讯k2路由虚拟服务器,斐讯K2P不死uboot分享带dhcp server功能
- 表情键盘 EmojiKeyboard
- 闭环控制步进电机对比传统开环控制的优点
- Day 15 正则表达式
- 计算机网络——IPV6基础知识
- centOS7 单机 mysql 5.7.24 主从
- 蓝牙学习笔记之建立蓝牙连接的过程
- Yolov5代码详解——detect.py
- rails kaminari 分页插件 find_by_sql查询
- python内置函数布尔值bool用法详解
- Linux设备与驱动学习之----什么是驱动
- [Python]PDF文件与图片转换(PyMuPDF)及转PPT
- ffmpeg实战之ffmpeg命令提取像素格式和PCM数据
热门文章
- SEL selector (二)
- nullnull使用PL/SQL获取创建用户的语句
- python requests 10041报错_Python-Requests1-批量登录获取uid
- brainfu*k语言执行
- python删除列表中字符串_python - 删除字符串中的字符列表
- Matlab功率谱估计
- python创建一个包,如何从python包创建一个osx应用程序/ dmg?
- gin 生成api文档_gin-swagger 生成RESTful风格OpenAPI文档
- 计算机图形图像电影论文,计算机图形图像绘制技术地现状分析及应用发展.doc...
- 生产上oracle扩展表空间,oracle基于裸设备(raw device)扩充表空间