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插件开发的更多相关文章

  1. 插件开发--BE插件开发

    U9的插件主要分为3种,即(1)BE插件(2)UI插件(3)BP/SV插件 1.新建类库解决方案 2.新建插件类,并引用以下dll,UBF安装目录U9.VOB.Product.UBF\UBFStudi ...

  2. 【eclipse插件开发实战】Eclipse插件开发4——插件JDE、PDE开发方式及plugin.xml配置文件结构

    Eclipse插件开发4--插件JDE.PDE开发方式及plugin.xml配置文件结构 开发方式分为:java开发环境JDE开发插件的方式和插件开发环境PDE开发插件方式. 插件通过添加到预定义的扩 ...

  3. Chrome插件开发,美化网页上的文件列表。chrome-extension,content-scripts

    趁着2018年还剩最后几天,发几篇博客,荒废太久了,惭愧. 最近也是需求驱动,研究了下Chrome插件开发.来看一下我们公司运维提供的日志查看页面 所有项目的日志都参杂在一起,每次去找都很痛苦.慢慢发 ...

  4. Fiddler 插件开发,使用 WPF 作为 UI 控件

    Fiddler 插件的 UI,本身使用的 WinForm,这个例子是使用 WinForm 中的 WPF 容器,将 WPF 控件作为 Fiddler 插件的 UI 使用. 为什么使用 WPF ?为了自适 ...

  5. jquery ui 中的插件开发

    1  $.widget() 必须引用 <script src=")" type="text/javascript"></script> ...

  6. rcp(插件开发)org.eclipse.ui.decorators 使用

    org.eclipse.ui.decorators这个扩展点可以为对应的节点添加不同的图标显示. 使用方式都差不多,以下就转载一下使用方式: 1.添加扩展点 org.eclipse.ui.decora ...

  7. Unity NGUI和UGUI与模型、特效的层级关系

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

  8. openfire spark 二次 开发 服务插件

    ====================  废话 begin   ============================ 最近老大让我为研发平台增加即时通讯功能.告诉我用comet 在web端实现即 ...

  9. 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 ...

随机推荐

  1. hp-pa安装oracle和bash

    一.安装oracle数据库 安装之前先进行环境检查: 1.检查系统版本 #uname -a 2.查看内存大小 #/usr/contrib/bin/machinfo | grep -i Memory 3 ...

  2. 基于DevExpress ImageSlider实现图片轮播效果

    工具:DevExpress版本为15.2.7 1.控件类型全称:DevExpress.XtraEditors.Controls.ImageSlider 2.控件所在程序集:DevExpress.Xtr ...

  3. kali 渗透的一些笔记

    kali实战笔记 17:55 2016/7/19 by: _Silvers kali系统安装后的配置及美化安装vmwareToolstar zxvf VMwareTools-sfsfsfasfasfs ...

  4. 。。。学习CSS3的第一个属性border-radius。。。

    学习border-radius,感觉这个文档写的很不错: http://blog.sina.com.cn/s/blog_61671b520101gelr.html

  5. mysql5.6.23免安装配置

    1.官网下载,并解压 2.环境变量,path下,追加mysql的bin路径D:\Program Files\mysql\bin; 3.mysql目录下的my-default.ini重命名为my.ini ...

  6. requirejs基础教程

    一.初识requirejs 随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,我们需要团队协作.模块复用. ...

  7. xml 的 CDATA

    <PolicyURL><![CDATA[http://ectp.tpi.cntaiping.com/TPEBizWeb/pages/B2C/show/downLoad.do?poli ...

  8. js判断输入时间是否大于系统时间

    validator.js中添加验证 beforeCurrentTime : {// 时间不能大于当前时间 validator : function(value) { var myDate = new ...

  9. Hibernate框架简述 内部资料 请勿转载 谢谢合作

    Hibernate的核心组件在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层.它通过配置文件(hibernate.properties或hibernate.c ...

  10. 用STM32CubeMX创建FreeRTOS项目

    1. 目标, PG13,PG14双线程双闪灯. 2. 测试平台 stm32f429i-disco keil v5.13.0.0 CubeMx 4.8.0 3. 步骤 3.1 打开cube, PG13, ...