创建带 Custom Tool Part的Web Part

 

创建一个带有自定义属性并且能在属性栏自由修改所定义属性的Webpart,也就是创建带 Custom Tool PartWeb Part

效果如下

要达到这样的效果,要做的无非就是一下两件事

.在你的project里增加一个CustomToolPart类并继承

Microsoft.SharePoint.WebPartPages.ToolPart

例如:     

public class CustomToolPart : Microsoft.SharePoint.WebPartPages.ToolPart
    {
       //添加ToolPart标题,非必须
public CustomToolPart()
        {           
            this.Title = "表示項目設定";            
        }
 
       //Add your code here
        }
    }
 添加在Project的如下位置,同一个namespace下面

这个类里所要描述的东西就是你想在属性编辑页面内呈现的东西,也就是说这个类里写的东西会出现在你的Custom Tool Part里面。

然后再在 //Add your code here部分开始添加代码吧

在这里,有一个必须要重载的类方法:ApplyChanges,他能够把你在属性编辑页面所作的修改传递给webpart,可以理解为【应用】跟【确定】两颗键的CLICK事件。

  public override void ApplyChanges()

        {     

              //这里我定义一个类型为WebPart的变量,并给已经在WebPart里定义好的

//自定义变量searchUrl赋值

            SiteQuotaView cw1 =

            (SiteQuotaView)this.ParentToolPane.SelectedWebPart;

cw1.searchUrl.Add(“OUTURL”);

        }

下面把ToolPart里常用的事件列一下

//Tool Part控件的值保存到关联 WebPart 控件的相应属性。

public override void ApplyChanges()

{}

// WebPart 控件索属性并将些属性分配给关联的 Tool Part控件

public override void SyncChanges()

{}

//可以理解为Cancel键的click事件

public override void CancelChanges()

{}

//Tool Part内的控件呈现

protected override void RenderToolPart(HtmlTextWriter output)

{}

另外,可以重载WebPart所拥有的各种方法,比如OnPreRenderCreateChildControls等等,webpart的方法先执行,再执行ToolPart里相同方法内的代码。

 

. Web Part class中重载GetToolParts方法

例如:

public override ToolPart[] GetToolParts()

        {

            ToolPart[] toolparts = new ToolPart[3];

            WebPartToolPart wptp = new WebPartToolPart();

            CustomPropertyToolPart custom = new CustomPropertyToolPart();

            toolparts[0] = custom;

            toolparts[1] = wptp;

            // 我制作的TOOLPART名字是CustomToolPart

            toolparts[2] = new CustomToolPart();

            return toolparts;           

        }

以下是对于这个方法的解释(引用自Rickie Lee's blog

Web Part class中重载WebPart基类的GetToolParts方法,GetToolParts方法返回引用新ToolPart对象的数组,新ToolPart对象将以在数组中的顺序显示在Web Part的属性面板中。如果Web Part需要,你可以显示多个ToolParts。需要注意的是,当你重载WebPart类的GetToolParts方法时,缺省的ToolPart对象(WebPartToolPartCustomPropertyToolPart)不能自动显示,因此你必须包含显示它们的代码。 

缺省情况下,GetToolParts方法将返回CustomPropertyToolPartWebPartToolPart对象。CustomPropertyToolPart对象将显示内置的tool part,这些tool part用来显示定制属性(custom properties)。如果你想通过使用内置的tool part来显示一些web part的定制属性,你必须在GetToolParts方法的返回数组包含对CustomPropertyToolPart对象的引用。WebPartToolPart对象将显示Web Part所有基类属性。在Web Part开发人员重载该方法后,他不得不明确显示这些缺省tool parts

一般情况下,制作此类WebPart都要定义一个自定义属性以用来存储必要的信息

例如:

public class SiteQuotaView : Microsoft.SharePoint.WebPartPages.WebPart

    {

        private List<string> _searchUrl = new List<string>();

       

        [Personalizable(PersonalizationScope.Shared),

WebBrowsable(false),

        WebDisplayName("StringList"),

        WebDescription("The URL what's in Search")]

        public List<string> searchUrl

        {

            get { return _searchUrl; }

            set { _searchUrl = value; }

        }

      //Here is the other code

}

自定义属性可以让非开发人员,比如站点管理员或者最终用户,在Web页面上直接修改Web Part所对应的类的某个属性值,而无需开发人员重新在Visual Studio 2005中修改代码,然后重新编译,重新部署。

各个Attribute修饰的解释如下

WebBrowsable:定义是否可以在网页上的属性设定里被看到

用法示范:[WebBrowsable(false) ][WebBrowsable ]

Personalizable:定义是否可以在使用者编辑个人网页时进行个性化设定

[Personalizable(PersonalizationScope.Shared) ]

[Personalizable(true) ]

[Personalizable ]

WebDisplayName:定义出现在属性定义上的标题

WebDescription:定义出现在属性定义上的描述

 

参考:

http://msdn.microsoft.com/en-us/library/ms948930.aspx

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值