最简单的webpart
1,在vs2005中新建类库 class library
2,添加引用 .net 的System.Web
3,在cs文件中添加using
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
4,让类继承 System.Web.UI.WebControls.WebParts.WebPart
5,重写方法
protected override void RenderContents(HtmlTextWriter writer)
{
//base.RenderContents(writer);
writer.Write("<font color=\"red\" >hello</font>");
}
6,生成项目
7,把DLL文件复制到 sharepoint 网站的bin目录下
8,修改sharepoint 网站的web.config文件,针对DLL文件增加safecontrol节点,保存web.config文件
9,SharePoint网站设置-库-Web 部件-新建-选择我们的webpart-导入库
10,在web页面上添加该webpart控件
具有自定义属性的webpart
要使普通属性成为自定义属性,需要给每个属性添加上相应的Attribute修饰
[Personalizable]
[WebBrowsable]
[WebDisplayName("输出文本")]
[WebDescription("要输出的文本")]
sharepoint会自动检测自定义属性的数据类型,来自动显示出不同的web控件。,例如:字符串、整数、浮点数-文本框;枚举-列表框;bool-复选框
webpart之间传递数据
根据要传递的数据类型,定义一个数据接口,并在一个类中实现这个接口
创建provider web part ,在其中创建一个方法来返回要提供的数据,该方法用[ConnectionProvider("")]标记
创建consumer web part ,在其中创建一个方法来接收数据,该方法用[ConnectionConsumer("")]标记
在放置webpart的页面上设置连接
TextMessage.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace beta2webparts
{
public interface ITextMessage
{
string MessageContent { get;set;}
}
class TextMessage:ITextMessage
{
private string _sMessageContent = default(string);
public string MessageContent
{
get
{
return _sMessageContent;
}
set
{
_sMessageContent = value;
}
}
}
}
TextInputWP.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
namespace beta2webparts
{
public class TextInputWP:System.Web.UI.WebControls.WebParts.WebPart
{
private TextBox _txtMessage = null;
protected override void CreateChildControls()
{
_txtMessage = new TextBox();
Button btn = new Button();
btn.Text = "submit";
this.Controls.Add(_txtMessage);
this.Controls.Add(btn);
base.CreateChildControls();
}
[ConnectionProvider("return the text message")]
public ITextMessage ReturnTextMessage()
{
this.EnsureChildControls();
ITextMessage result = new TextMessage();
result.MessageContent = _txtMessage.Text;
return result;
}
}
}
sayhello.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
namespace beta2webparts
{
public class sayhello : System.Web.UI.WebControls.WebParts.WebPart
{
public enum OutputTextColor
{
Red,
Green,
Blue,
Black,
White
}
private string _sOutputText = "";
private OutputTextColor _TextColor = OutputTextColor.Green;
[Personalizable]
[WebBrowsable]
[WebDisplayName("输出文本")]
[WebDescription("要输出的文本")]
public string OutputText
{
get { return _sOutputText; }
set { _sOutputText = value; }
}
[Personalizable]
[WebBrowsable]
[WebDisplayName("输出文本的颜色")]
[WebDescription("要输出的文本颜色")]
public OutputTextColor TextColor
{
get { return _TextColor; }
set { _TextColor = value; }
}
protected override void RenderContents(HtmlTextWriter writer)
{
//base.RenderContents(writer);
writer.Write("<font color=\""+_TextColor+"\" >" + OutputText.ToString() + "</font>");
}
[ConnectionConsumer("receive the text message")]
public void ReceiveTextMessage(ITextMessage textMessage)
{
if ((textMessage != null) && (textMessage.MessageContent != null))
{
this.OutputText = textMessage.MessageContent;
}
}
}
}