`
terryfeng
  • 浏览: 507073 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

自己动手编写一个类似 QuickPart 的用户控件包装器

阅读更多

  大家知道涂曙光写了一个QuickPart的包装器,那么大家是否想自己来写一个这样的包装器呢,别担心其实并不难,自己去写一个包装器的好处是,你可以定制这个包装器样式和属性等,大家只要复制我下面的代码进行编译就可以了。

  首先是建立WebPart项目,你可以选择建立一个类库,然后引用相应的程序集,建立一个WebPart程序集,你也可以直接建立一个WebPart工程,我们下面使用后面这种方法,只是为了简化部署的过程,对于部署网上的资料真是很多,同学们可以找一下。

  1.建立一个WebPart工程

   

  2.建立一个删除WebPart1文件夹,建立一个UCWebPart 的WebPart

  

  3.复制下面的代码到你的UCWebPart.Cs 文件中,建立Zone

  

Code
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->Code
using System;
using System.Runtime.InteropServices;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;
using System.ComponentModel;

using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;

using System.Collections;


namespace UltraWebPart
{
    [Guid(
"e58fdeb2-2fe5-4119-9b47-d80818adc876")]
    
public class UCWebPart : System.Web.UI.WebControls.WebParts.WebPart, IWebEditable
    {
        
private UserControl usercontrol;
        
public UCWebPart()
        {
        }

        
protected override void CreateChildControls()
        {
            
base.CreateChildControls();
            Controls.Clear();

            
if (this.Url != string.Empty)
            {
                usercontrol 
= (UserControl)Page.LoadControl(@"/wpresources/" + this.Url);
                Controls.Add(usercontrol);
            }
        }
        
protected override void Render(HtmlTextWriter writer)
        {
            EnsureChildControls();
            
if (usercontrol != null)
            {
                usercontrol.RenderControl(writer);
            }
        }

        
private string _url = string.Empty;

        [Personalizable]
        [WebBrowsable]
        [WebDisplayName(
"功能地址")]
        [WebDescription(
"功能文件地址")]
        [Category(
"功能设置")]
        
public string Url
        {
            
get
            {
                
return _url;
            }
            
set
            {
                _url 
= value;
            }
        }

        
public EditorPartCollection CreateEditorParts()
        {
            UltraWebPart.UCWebPartEditor obj 
= new UltraWebPart.UCWebPartEditor();
            obj.ID 
= this.ID + "_WebPartEditor";
            obj.Title 
= "选择附加功能";
            ArrayList EditorParts 
= new ArrayList();
            EditorParts.Add(obj);
            
return new EditorPartCollection(EditorParts);
        }
    }
}

 

 

  4.再建立一个类库文件,UCWebPartEditor.cs 将下面的代码复制到其中,建立一个Editor

 

Code
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->Code
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.SharePoint;
using System.IO;

namespace UltraWebPart
{
    
public class UCWebPartEditor : System.Web.UI.WebControls.WebParts.EditorPart
    {
        
private DropDownList ddlTree = new DropDownList();

        
public override bool ApplyChanges()
        {

            UltraWebPart.UCWebPart part 
= (UltraWebPart.UCWebPart)WebPartToEdit;

            part.Url 
= this.ddlTree.SelectedItem.Value;

            
return true;
        }

        
public override void SyncChanges()
        {

        }

        
protected override void CreateChildControls()
        {
            
base.CreateChildControls();

            
//从wpresources目录下找出所有的文件
            string[] a = System.IO.Directory.GetFiles(HttpContext.Current.Server.MapPath("../wpresources"));
            FileInfo info;
            
for (int i = 0; i < a.Length; i++)
            {
                info 
= new FileInfo(a[i]);
                ddlTree.Items.Add(info.Name);
            }


            Controls.Add(ddlTree);
        }
        
protected override void RenderChildren(HtmlTextWriter writer)
        {
            
base.RenderChildren(writer);
        }

        
public override void RenderControl(HtmlTextWriter writer)
        {
            
base.RenderControl(writer);
        }
    }
}

 

 

  5. 编译并部署这个项目到SharePoint 站点

  

  6. 打开WSS站点,添加这个WebPart,像使用QuickPart一样的去使用,怎么样是不是很简单呢。

  

 

 

分享到:
评论

相关推荐

    quickpart : 用户控件包装器for sharepoint2007

    您可以从下载页面,仅下载最新的QuickPart程序集文件(QuickPart 1.03 DLL),使用这个压缩包里面的QuickPart.dll,替换掉您的服务器上原有的QuickPart.dll即可。

    quickPart部署及测试的用户控件

    QuickPart.Dll文件、部署QuickPart完毕后的Web.Config文件,以及测试QuickPart的用户控件。 此资料和是文章的配套内容: 文章参见: http://blog.csdn.net/xjzdr/archive/2008/06/02/2505122.aspx

    C#WinForm用户控件间相互传值

    本小程序主要展示WinForm用户控件的使用及相互之间的通信,这里主要是通过事件进行实现的,第一个用户控件:(UCForm1.cs)主要包含一个文本框,第二个用户控件:(UCForm2.cs)包含了一个DataGridView和一个文本框,...

    c# winform usercontrol用户控件传值

    在C# WinForm应用开发中,用户控件(UserControl)是一种自定义控件,它允许开发者组合多个标准控件并作为一个单一的组件使用。在实际项目中,我们经常需要在窗体(Form)和用户控件之间传递数据,以便实现更复杂的...

    c# 自定义用户控件例(含自定义方法和事件)

    在C#中,用户控件(UserControl)是一个复合控件,允许你组合多个现有的控件并添加自己的行为和样式。创建用户控件的过程通常涉及以下步骤: 1. **创建新的用户控件类**:在Visual Studio中,你可以选择“添加新项...

    类似Excel的控件(带有公式编辑)

    "类似Excel的控件(带有公式编辑)"是一个专为此类需求设计的组件,它允许用户在应用程序中创建和编辑表格,同时支持类似于Excel的公式进行计算。这种控件在各种业务应用、数据分析工具或报表系统中都有广泛的应用。 ...

    C#编写《仪表盘》控件

    使用C#编写的一个工业仪表盘的控件,控件可以变大小,背景颜色、指针等颜色可以改变。有意向童鞋可以下载参考。本人声明:本人为业余爱好者,编写控件纯粹是玩耍,所以控件并未经过严格测试,和代码冗余测试等等,若...

    wpf中用用户控件做出来的一个自定义弹出窗口

    本项目通过使用用户控件(User Control)实现了这样一个功能,它不仅提供了弹出窗口的基本结构,还引入了渐显式放大动画效果,使得弹出过程更加引人注目和美观。 首先,让我们深入了解WPF中的用户控件(User Control)...

    C#编写的RIBBON控件,仿Office2013

    在IT领域,C#是一种广泛使用...总的来说,这个C#编写的RIBBON控件项目为开发者提供了一个实现Office 2013风格界面的起点,通过学习和实践,开发者能够提升自己的C# UI设计技能,并为用户打造更加直观和高效的软件体验。

    C# 编写的速度仪表控件

    【标题】:“C# 编写的速度仪表控件”揭示了这个项目的核心是利用C#编程语言设计并实现了一个可视化的效果组件,即速度仪表。在软件开发中,控件是构建用户界面的基本元素,用于接收用户输入或显示信息。速度仪表...

    图形控件(含示波器控件,VC)

    示波器控件通常是一个自定义的ActiveX控件,它可以模拟真实物理示波器的功能,显示波形图,处理并展示模拟或数字信号的变化。ActiveX控件是一种跨平台的组件,可以在多种支持ActiveX技术的应用程序中使用,如VC++、...

    【原创】c# ListView 大图标显示(分装用户控件)

    在这个【原创】c# ListView 大图标显示的项目中,开发者使用了Visual Studio 2005(VS2005)作为开发环境,创建了一个用户控件,专门用于展示大图标模式下的ListView。 1. **控件封装与复用**: 开发者将ListView...

    基于C#编写的操作摄像头的Activex控件

    标题中的“基于C#编写的操作摄像头的Activex控件”指的是使用C#编程语言创建的一个ActiveX控件,该控件专用于控制和操作计算机系统中的摄像头设备。ActiveX是一种由微软开发的技术,允许在不同应用程序之间共享和...

    Qt编写的类似Simulink仿真界面的小程序

    在本项目中,我们探讨的是一个使用Qt框架开发的类似于MATLAB Simulink的仿真界面小程序。这个小程序是在Visual Studio 2010环境下构建的,并且基于Qt 4.8.5版本,展示了C++编程语言的强大功能以及Qt库在图形用户界面...

    类似于delphi的属性编辑器控件, 用作界面设计器很好

    总的来说,ObjInspect作为一个类似于Delphi的属性编辑器控件,能够为开发者提供高效、直观的界面设计体验,减少手动编码工作,提升开发效率。通过深入理解并利用它的功能,开发者可以构建出功能丰富、用户体验优秀的...

    C#编写《LED圆形灯》控件

    本文将深入探讨如何使用C#来编写一个LED圆形灯控件,该控件适用于工业控制界面,能够模拟现实中的LED灯光效果,提供直观的操作体验。 首先,我们要理解LED圆形灯控件的基本概念。LED灯通常被用作状态指示器,通过...

    一个实现PB窗口控件的自动缩放功能的例程

    在编程领域,特别是涉及到用户界面...这个名为"autoresize"的例程提供了一个具体实现自动缩放功能的参考,开发者可以通过学习和修改这个例程,将其应用到自己的PowerBuilder项目中,以实现更加灵活和自适应的用户界面。

    WinForm仿word编辑控件

    3. **自定义开发**:开发者也可以选择从零开始编写自己的编辑控件,但这需要深入理解文本处理和GUI编程。 **WinFormHTML.dll** 这个文件名暗示了控件可能基于HTML和Web技术实现。可能使用了WebBrowser控件,这是一...

    一个时间控件 ,关于active 控件的编写。

    标题中的“一个时间控件”表明这是一个与时间相关的用户界面组件,可能是在Microsoft MFC(Microsoft Foundation Classes)框架下开发的控件,因为提到了“MFC”(Microsoft Foundation Classes库)。MFC是Microsoft...

    C# 编写的农历类,MyMonthCalendar控件和MyDateTimePicker控件。

    虽然作者表示这些控件的编写并不完美,但它们提供了一个基础,可以帮助其他开发者快速实现农历功能,同时也可以作为学习和改进的基础。对于想要深入理解和使用农历功能的C#程序员来说,这是一个有价值的资源。

Global site tag (gtag.js) - Google Analytics