插件开发-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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375819.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为博客园选择一个小巧霸气的语法高亮插件

博客园的语法高亮简直蛋疼&#xff0c;于是乎就打算找一个靠谱的插件来改造下。各种百度谷歌&#xff0c;大致得到几个推荐&#xff1a;SyntaxHighlighter&#xff0c;Snippet&#xff0c;Google Code Pretiffy&#xff0c;Highlight&#xff0c;SHJS。其实 SyntaxHighlighter …

PS图片删除需要计算机管理权限,如何使用PsTools工具执行本地/远程PC管理任务

大多数刚入门的管理员都习惯使用 RDP 或其它类似的工具连接到远程 Windows 中进行图形化管理。而 PowerShell 及 PsTools 等工具可以帮助我们在命令行中执行相当多的管理任务&#xff0c;更主要的是可以将其写成脚本来执行周期性重复任务或在管理大批量服务器时提高效率。在企业…

Python实验:关灯游戏

文章目录 前言一、设计表二、关键代码三、运行结果小地图&#xff0c;容易难度&#xff1a;中地图&#xff0c;中等难度&#xff1a;大地图&#xff0c;困难难度&#xff1a; 四、完整代码链接总结 前言 这是一个Python实验作业&#xff0c;内容如下&#xff1a; 题目要求&am…

python计算圆的面积

用Python创建一个脚本&#xff0c;要求&#xff1a; 能计算半径为2的圆的面积保留10位小数可以直接执行 #!/usr/bin/env python3 import math print("Area is:{:.10f}".format(math.pi*4))计算圆的面积要用到pi&#xff0c;所以我们引用模块math

昆明学院计算机专业在哪个校区,昆明学院有几个校区及校区地址

昆明学院有几个校区及校区地址2017-06-19 11:15:56文/韩竞仪最近有很多考生和家长咨询小编&#xff0c;昆明学院有几个校区&#xff0c;今年新生会被分配到哪个校区?哪个校区好?等相关问题&#xff0c;下面小编统一回复一下考生们的问题。昆明学院有3个校区&#xff0c;分别是…

Solution 19: Fibonacci数列

问题描述 求Fibonacci数列的第n项。Fibonacci数列为1,1,2,3,5,... 解决思路 (1) 递归&#xff0c;指数级时间复杂度&#xff1b; (2) 循环&#xff0c;O(n)时间复杂度&#xff1b; (3) 矩阵乘法&#xff0c;O(logn)时间复杂度&#xff1b; (4) 公式法&#xff0c;O(1)时间复杂度…

ASP.NET MVC 学习第一天

今天开始第一天学习asp.net mvc&#xff0c;写的不是很好&#xff0c;高手不要喷&#xff0c;希望大家能一起进步学习。 好了&#xff0c;开始学习 新建项目&#xff0c;选择mvc 4应用程序 接下来选择基本&#xff0c;视图引擎当然要选择Razor&#xff0c;如果在选择aspx那我们…

计算机显示发送报告,Word文档打不开提示发送错误报告的解决方法

经常使用word文档的人员都会碰到过这种发送错误报告情况&#xff0c;既然有这个问题就要查个究竟什么原因造成&#xff0c;才能完美解决&#xff0c;那么今天小编就在这里讲解word文档发送错误报告的方法。根本原因是&#xff1a;打开word出现提示word发送错误报告的故障其主要…

图灵计算机模型意义,图灵机有什么意义_学习图灵机模型中遇到的问题

图灵机意义图灵提出图灵机的模型并不是为了同时给出计算机的设计&#xff0c;它的意义我认为有如下几点&#xff1a;1、它证明了通用计算理论&#xff0c;肯定了计算机实现的可能性&#xff0c;同时它给出了计算机应有的主要架构&#xff1b;2、图灵机模型引入了读写与算法与程…

使用MVVM-Sidekick开发Universal App(一)

终于要迈进Universal的大坑了&#xff0c;还有点小激动呢。 CurrencyExchanger 掌中汇率是我前几年发布在Windows Phone商店中的一个应用&#xff0c;当时是WP7版本&#xff0c;下载链接&#xff1a;http://www.windowsphone.com/zh-cn/store/app/%E6%8E%8C%E4%B8%AD%E6%B1%87%…

如何检测本计算机耗电量,如何查看电脑耗电量?鲁大师查看电脑使用功率的方法...

【www.xinr41319.cn--电脑网络】查看自己电脑的电源功率有两大好处&#xff0c;第一知道给台式电脑配置多大的电源&#xff0c;第二可以精确的算出&#xff0c;一台电脑&#xff0c;一天一般消耗多少电&#xff0c;那么小编教大家来查看一下自己电脑的功率是多少。我们可以要借…

【转载】COM小结

原文&#xff1a;http://blog.csdn.net/byxdaz/article/details/6595210 一、Com概念 所谓COM&#xff08;Componet Object Model&#xff0c;组件对象模型&#xff09;&#xff0c;是一种说明如何建立可动态互变组件的规范&#xff0c;此规范提供了为保证能够互操作&#xff0…

解决Dropbox无法连接的问题

同步共享服务Dropbox从6月18日开始再次遭到封锁&#xff0c;原因是DNS污染。Dropbox上次在2010年5月曾遭到IP封锁和网址关键字过 滤&#xff0c;2012年5月除文件外链功能外其它功能可正常访问&#xff1b;2014年2月全部功能都可以正常访问。中国正展开净网行动&#xff0c;文件…

RDLC报表系列一

1、报表项目搭建&#xff1a; 配置好后&#xff0c;单击Web服务URL:http://lg-20151517ryre/ReportServer 如果电脑系统打开的时候没有设置密码的话&#xff0c;此时打开有可能会出现需要登录名和密码。如出现此种情况可给Administrator设置密码。然后刷新当前页面就可以看大上…

ADS-B显示终端5.9

更改日志 1 更新背景地图。增加了全国范围内的VOR电台、DME、NDB导航台信息&#xff0c;包含有坐标信息、代码信息、频率等内容。 VOR电台、DME、NDB导航台信息来自中国民航局公布的航行情况资料汇编。VOR、DME、NDB分别採用不同的图形绘制&#xff0c;目标均採用淡绿色画笔…

域名自动跳转不搭建服务器,宝塔搭建的服务器WEB系统环境如果做域名301跳转

宝塔搭建的服务器WEB系统环境如果做域名301跳转今天老蒋遇到一个网友&#xff0c;服务器WEB系统环境是用宝塔搭建的&#xff0c;搭建的网站绑定过WWW域名和不带WWW域名&#xff0c;他是希望能全部统一到WWW的域名&#xff0c;这里应该是他程序没有自带301跳转&#xff0c;如果是…

OpenCV Python教程(1、图像的载入、显示和保存)

本文是OpenCV 2 Computer Vision Application Programming Cookbook读书笔记的第一篇。在笔记中将以Python语言改写每章的代码。 PythonOpenCV的配置这里就不介绍了。 注意&#xff0c;现在OpenCV for Python就是通过NumPy进行绑定的。所以在使用时必须掌握一些NumPy的相关知识…

大华出入口管理系统H710服务器配置,DH-DSS-H710S2 大华出入口综合管理系统 停车场收费 支持人脸相机设备添加...

DH-DSS-H710S2 大华出入口综合管理系统 支持车辆列表展示&#xff0c;包括车辆编号、车牌、车场、车辆品牌、车辆类型、车身颜色、车主等信息 支持通过人员编号、姓名进行人员信息查询 支持打印小票与导出缴费信息 DH-DSS-H710S2DH-DSS-H710S2大华出入口综合管理系统DH-DSS-H71…

微软块级备份引擎服务器,文件级与块级备份区别

首先我们先来了解一下&#xff0c;什么叫做块级&#xff1f;什么叫文件级&#xff1f;1.块级概念&#xff1a;块级是指以扇区为基础&#xff0c;一个或我连续的扇区组成一个块&#xff0c;也叫物理块。它是在文件系统与块设备(例如&#xff1a;磁盘驱动器)之间。2.文件级概念&a…

通过物理映射往虚拟机中传输数据

1、在虚拟机管理界面&#xff0c;找到硬盘&#xff0c;双击 2、在跳出的页面中点击“映射” 3、在弹出的页面中将“以只读模式打开文件”选项勾去 4、选择是“”是 5、这个时候就看到电脑上出现了一个“Z盘”&#xff0c;此时就可以将需要复制进虚拟机的文件&#xff0c;复制…