插件开发-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, , );//一般为从左往右按钮个数乘以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", , , "", "", 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, , , System.Web.UI.WebControls.Unit.Pixel(), System.Web.UI.WebControls.Unit.Pixel(), 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, , , 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.最后运行下单据效果

插件开发-UI插件开发的更多相关文章
- 插件开发--BE插件开发
U9的插件主要分为3种,即(1)BE插件(2)UI插件(3)BP/SV插件 1.新建类库解决方案 2.新建插件类,并引用以下dll,UBF安装目录U9.VOB.Product.UBF\UBFStudi ...
- 【eclipse插件开发实战】Eclipse插件开发4——插件JDE、PDE开发方式及plugin.xml配置文件结构
Eclipse插件开发4--插件JDE.PDE开发方式及plugin.xml配置文件结构 开发方式分为:java开发环境JDE开发插件的方式和插件开发环境PDE开发插件方式. 插件通过添加到预定义的扩 ...
- Chrome插件开发,美化网页上的文件列表。chrome-extension,content-scripts
趁着2018年还剩最后几天,发几篇博客,荒废太久了,惭愧. 最近也是需求驱动,研究了下Chrome插件开发.来看一下我们公司运维提供的日志查看页面 所有项目的日志都参杂在一起,每次去找都很痛苦.慢慢发 ...
- Fiddler 插件开发,使用 WPF 作为 UI 控件
Fiddler 插件的 UI,本身使用的 WinForm,这个例子是使用 WinForm 中的 WPF 容器,将 WPF 控件作为 Fiddler 插件的 UI 使用. 为什么使用 WPF ?为了自适 ...
- jquery ui 中的插件开发
1 $.widget() 必须引用 <script src=")" type="text/javascript"></script> ...
- rcp(插件开发)org.eclipse.ui.decorators 使用
org.eclipse.ui.decorators这个扩展点可以为对应的节点添加不同的图标显示. 使用方式都差不多,以下就转载一下使用方式: 1.添加扩展点 org.eclipse.ui.decora ...
- Unity NGUI和UGUI与模型、特效的层级关系
目录 1.介绍两大UI插件NGUI和UGUI 2.unity渲染顺序控制方式 3.NGUI的控制 4.UGUI的控制 5.模型深度的控制 6.粒子特效深度控制 7.NGUI与模型和粒子特效穿插层级管理 ...
- openfire spark 二次 开发 服务插件
==================== 废话 begin ============================ 最近老大让我为研发平台增加即时通讯功能.告诉我用comet 在web端实现即 ...
- Cloudera Manager、CDH零基础入门、线路指导 http://www.aboutyun.com/thread-9219-1-1.html (出处: about云开发)
Cloudera Manager.CDH零基础入门.线路指导http://www.aboutyun.com/thread-9219-1-1.html(出处: about云开发) 问题导读:1.什么是c ...
随机推荐
- hp-pa安装oracle和bash
一.安装oracle数据库 安装之前先进行环境检查: 1.检查系统版本 #uname -a 2.查看内存大小 #/usr/contrib/bin/machinfo | grep -i Memory 3 ...
- 基于DevExpress ImageSlider实现图片轮播效果
工具:DevExpress版本为15.2.7 1.控件类型全称:DevExpress.XtraEditors.Controls.ImageSlider 2.控件所在程序集:DevExpress.Xtr ...
- kali 渗透的一些笔记
kali实战笔记 17:55 2016/7/19 by: _Silvers kali系统安装后的配置及美化安装vmwareToolstar zxvf VMwareTools-sfsfsfasfasfs ...
- 。。。学习CSS3的第一个属性border-radius。。。
学习border-radius,感觉这个文档写的很不错: http://blog.sina.com.cn/s/blog_61671b520101gelr.html
- mysql5.6.23免安装配置
1.官网下载,并解压 2.环境变量,path下,追加mysql的bin路径D:\Program Files\mysql\bin; 3.mysql目录下的my-default.ini重命名为my.ini ...
- requirejs基础教程
一.初识requirejs 随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,我们需要团队协作.模块复用. ...
- xml 的 CDATA
<PolicyURL><![CDATA[http://ectp.tpi.cntaiping.com/TPEBizWeb/pages/B2C/show/downLoad.do?poli ...
- js判断输入时间是否大于系统时间
validator.js中添加验证 beforeCurrentTime : {// 时间不能大于当前时间 validator : function(value) { var myDate = new ...
- Hibernate框架简述 内部资料 请勿转载 谢谢合作
Hibernate的核心组件在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层.它通过配置文件(hibernate.properties或hibernate.c ...
- 用STM32CubeMX创建FreeRTOS项目
1. 目标, PG13,PG14双线程双闪灯. 2. 测试平台 stm32f429i-disco keil v5.13.0.0 CubeMx 4.8.0 3. 步骤 3.1 打开cube, PG13, ...