在sharepoint中webpart是少不了的,要是定制自己的webpart,webpart属性也少不了,但是微软提供给我们的方式有限,见
在sharepoint中webpart是少不了的,要是定制自己的webpart,webpart属性也少不了,但是微软提供给我们的方式有限,见:
http://msdn.microsoft.com/en-us/library/dd584174.aspx
但是这个方式还是比较好的http://msdn.microsoft.com/en-us/library/dd584178(office.11).aspx
这也有一篇http://www.zimmergren.net/archive/2008/11/29/how-to-custom-web-part-properties-toolpart.aspx
webpart代码
![](/Images/OutliningIndicators/ContractedBlock.gif)
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 Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;
namespace Zimmergren.CustomToolPart
{
[Guid("dcc60e60-5528-48c5-b8b5-aeecf0822300")]
public class WebPart111 : Microsoft.SharePoint.WebPartPages.WebPart
{
public WebPart111()
{
this.ExportMode = WebPartExportMode.All;
}
public string Property1
{
get
{
return _property1;
}
set
{
_property1 = value;
}
}
string _property1;
public string Property2
{
get
{
return _property2;
}
set
{
_property2 = value;
}
}
string _property2;
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
writer.Write(Property1);
writer.Write("<br/>");
writer.Write(Property2);
}
public override ToolPart[] GetToolParts()
{
ToolPart[] allToolParts = new ToolPart[3];
WebPartToolPart standardToolParts = new WebPartToolPart();
CustomPropertyToolPart customToolParts = new CustomPropertyToolPart();
allToolParts[0] = standardToolParts;
allToolParts[1] = customToolParts;
allToolParts[2] = new CustomToolPart();
return allToolParts;
}
}
}
另外新加一个cs文件如下
![](/Images/OutliningIndicators/ContractedBlock.gif)
Code
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SharePoint;
namespace Zimmergren.CustomToolPart
{
public class CustomToolPart : Microsoft.SharePoint.WebPartPages.ToolPart
{
DropDownList ddl;
Panel toolPartPanel;
TextBox tb;
protected override void CreateChildControls()
{
toolPartPanel = new Panel();
ddl = new DropDownList();
ddl.ID = "ddl";
// Simply getting the lists of the current web, and displaying them in the dropdown-list.
SPListCollection lists = SPContext.Current.Web.Lists;
foreach (SPList list in lists)
ddl.Items.Add(list.Title);
tb = new TextBox();
tb.ID = "tb";
toolPartPanel.Controls.Add(ddl);
toolPartPanel.Controls.Add(tb);
Controls.Add(toolPartPanel);
base.CreateChildControls();
}
public override void ApplyChanges()
{
WebPart111 wp = (WebPart111)this.ParentToolPane.SelectedWebPart;
wp.Property1 = ddl.SelectedValue;
wp.Property2 = tb.Text;
}
}
}
简单的结果
![](https://pic002.cnblogs.com/img/geek007/200905/2009051311230713.jpg)
稍微复杂点的
![](https://pic002.cnblogs.com/img/geek007/200905/2009051311235097.jpg)
属性面板选list 的参见:http://www.tonstegeman.com/Blog/Lists/Posts/Post.aspx?List=70640fe5-28d9-464f-b1c9-91e07c8f7e47&ID=72