MOSS编写连接的WebPart
还记得以前在 03里面编写的可连接的WebPart?那是多复杂,多麻烦啊,还有注册事件哦,我相信。编写过03的WebPart可能对那个11步很了解把,现在我们来介绍在07里面编写连接的WebPart是多么简单的事情哦。在很多MOSS的实际开发中,连接的WebPart是很有用的哦,在这里我只介绍一个简单的DEMO,起一个头。。
首先是提供者类、、
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 ProviderDemo
{
[Guid("6b3f0c10-a574-4181-a765-b5d1ad65cf1b")]
public class ProviderDemo : System.Web.UI.WebControls.WebParts.WebPart, IWebPartField
{
public ProviderDemo()
{
this.ExportMode = WebPartExportMode.All;
}
private TextBox tb;
private Button btn;
protected override void CreateChildControls()
{
tb = new TextBox();
Controls.Add(tb);
btn = new Button();
btn.Text = "Send!";
Controls.Add(btn);
}
[ConnectionProvider("SendValue", AllowsMultipleConnections=true)]
public IWebPartField SendObject()
{
EnsureChildControls();
return this;
}
#region IWebPartField Members
public void GetFieldValue(FieldCallback callback)
{
EnsureChildControls();
callback(tb.Text);
}
public System.ComponentModel.PropertyDescriptor Schema
{
get { return null; }
}
#endregion
}
}
这个接受类。。。
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 ConsumerDemo
{
[Guid("f97a6359-35fe-4de6-a7ed-5bbbe3aa7fda")]
public class ConsumerDemo : System.Web.UI.WebControls.WebParts.WebPart
{
public ConsumerDemo()
{
this.ExportMode = WebPartExportMode.All;
}
private Label lbl;
private IWebPartField provider;
protected override void CreateChildControls()
{
lbl = new Label();
Controls.Add(lbl);
}
[ConnectionConsumer("GetObject")]
public void RecvObject(IWebPartField prov)
{
provider = prov;
}
private void GetData(object fieldValue)
{
lbl.Text = Convert.ToString(fieldValue);
}
protected override void OnPreRender(EventArgs e)
{
if (provider != null)
{
provider.GetFieldValue(new FieldCallback(GetData));
}
base.OnPreRender(e);
}
}
}
大家看看,,是不是很简单,比03里面的可要简单多咯。。。