为WebPart程序集进行强命名
为了使我们的WebPart可以部署到GAC(global assembly cache)中,供多个应用程序共享,我们必须为WebPart增加强命名。强名称由一个文本格式的名称,版本号,地区语言信息(如果提供了的话)和一个公钥数字签名组成。
在Visual Studio中为WebPart强命名
- 项目->RegionFilterWebPart属性。
- 在项目属性页面中,点签名标签。
- 在选择一个强名key文件处,点新建。
- 在创建强命名key文件对话框中,填写keypair文件名。取消下面的使用密码保护我的密钥的选择框。
- 关闭项目属性页。
实现地理区域Filter Provider WebPart
下面我们将创建一个类实现地理区域筛选部件。在代码文件头部添加下列引用。
using wsswebparts = Microsoft.SharePoint.WebPartPages;
using aspnetwebparts = System.Web.UI.WebControls.WebParts;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Collections.ObjectModel;
引用这些命名空间可以使我们方便的使用其中的类库和类型,而不必通过使用完整的命名空间路径来访问。
我们来编写RegionFilterWebPart的代码。
- 首先来创建要显示在界面上供用户选择地理区域的复选框。
- 实现ITransformableFilterValues接口,以使得我们的地理区域筛选WebPart可以连接filter consumer WebPart。
- 开放一个provider连接点将用户选择的区域值作为ITransformableFilterValues接口的实例返回。
用下面的代码替换现有的整个RegionFilterWebPart类定义。
public class RegionFilterWebPart:
wsswebparts.WebPart, wsswebparts.ITransformableFilterValues
{
CheckBoxList cblRegionList;
ListItem cbitemRegion;
protected override void CreateChildControls()
{
cblRegionList = new CheckBoxList();
cblRegionList.AutoPostBack = true;
Controls.Add(cblRegionList);
cbitemRegion = new ListItem();
cbitemRegion.Text = "Redmond";
cblRegionList.Items.Add(cbitemRegion);
cbitemRegion = null;
cbitemRegion = new ListItem();
cbitemRegion.Text = "Seattle";
cblRegionList.Items.Add(cbitemRegion);
cbitemRegion = null;
cbitemRegion = new ListItem();
cbitemRegion.Text = "US";
cblRegionList.Items.Add(cbitemRegion);
cbitemRegion = null;
cbitemRegion = new ListItem();
cbitemRegion.Text = "World";
cblRegionList.Items.Add(cbitemRegion);
cbitemRegion = null;
cbitemRegion = new ListItem();
cbitemRegion.Text = "All";
cblRegionList.Items.Add(cbitemRegion);
cbitemRegion = null;
base.CreateChildControls();
}
// Implementations of the ITransformableFilterValues properties.
[wsswebparts.WebPartStorage(wsswebparts.Storage.None)]
public virtual bool AllowMultipleValues
{
get
{
return true;
}
}
[wsswebparts.WebPartStorage(wsswebparts.Storage.None)]
public virtual bool AllowAllValue
{
get
{
return true;
}
}
[wsswebparts.WebPartStorage(wsswebparts.Storage.None)]
public virtual bool AllowEmptyValue
{
get
{
return false;
}
}
[wsswebparts.WebPartStorage(wsswebparts.Storage.None)]