Featrue的开发与部署以前没做过,需要的时候做了一次感觉不是很难,下面就是一个简单的Feature部署EventHandler来控制列表里的一列在添加和修改时保持唯一。
①先建立类库写Feature其代码如下;

Code
1
using System;
2
using System.Collections.Generic;
3
using System.Linq;
4
using System.Text;
5
6
using Microsoft.SharePoint;
7
8
namespace BSpaceFeature
9

{
10
public class BSpaceFT:SPFeatureReceiver
11
{
12
public override void FeatureActivated(SPFeatureReceiverProperties properties)
13
{
14
SPWeb web = (SPWeb)properties.Feature.Parent;
15
web.AllowUnsafeUpdates = true;
16
SPList list=web .Lists ["客户管理"];
17
string assembly = "BSpaceEventHandler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=4051e4af7309362c";
18
string className = "BSpaceEventHandler.BSpaceEHD";
19
list.EventReceivers.Add(SPEventReceiverType.ItemAdding, assembly, className);
20
list.EventReceivers.Add(SPEventReceiverType.ItemUpdating, assembly, className);
21
}
22
public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
23
{
24
}
25
public override void FeatureInstalled(SPFeatureReceiverProperties properties)
26
{
27
}
28
public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
29
{
30
}
31
}
32
}
② 在同一解决方案下面建立类库 来写EventHandler其代码如下;

Code
1
using System;
2
using System.Collections.Generic;
3
using System.Linq;
4
using System.Text;
5
6
using Microsoft.SharePoint;
7
8
namespace BSpaceEventHandler
9

{
10
public class BSpaceEHD:SPItemEventReceiver
11
{
12
public override void ItemAdding(SPItemEventProperties properties)
13
{
14
SPWeb web = properties.OpenWeb();
15
SPList list = web.Lists["客户管理"];
16
SPListItemCollection lists = list.Items;
17
string content = "";
18
using (SPWeb web1 = (properties.OpenWeb()) as SPWeb)
19
{
20
SPList List = web1.Lists[properties.ListTitle] as SPList;
21
string sNameTitle = List.Fields["公司名称"].InternalName;
22
content = properties.AfterProperties[sNameTitle].ToString();
23
}
24
string str = "";
25
foreach (SPListItem splist in lists)
26
{
27
if (content.Equals(splist["公司名称"].ToString()))
28
{
29
str = splist["公司名称"].ToString();
30
properties.Cancel = true;
31
properties.ErrorMessage = "公司名称:" + str + "已经存在,您不能添加!请联系管理员!";
32
break;
33
}
34
}
35
}
36
public override void ItemUpdating(SPItemEventProperties properties)
37
{
38
SPWeb web = properties.OpenWeb();
39
SPList list = web.Lists["客户管理"];
40
SPListItemCollection lists = list.Items;
41
SPListItem item = properties.ListItem;
42
string content = "";
43
string strId = item["ID"].ToString();
44
using (SPWeb web1 = (properties.OpenWeb()) as SPWeb)
45
{
46
SPList list1 = web1.Lists[properties.ListTitle] as SPList;
47
string sNameTitle = list1.Fields["公司名称"].InternalName;
48
content = properties.AfterProperties[sNameTitle].ToString();
49
}
50
foreach (SPListItem splist in lists)
51
{
52
if (content.Equals(splist["公司名称"].ToString()))
53
{
54
if (!(strId.Equals(splist["ID"].ToString())))
55
properties.Cancel = true;
56
properties.ErrorMessage = "公司名称:" + splist["公司名称"].ToString() + "已经存在!请联系管理员!";
57
}
58
}
59
}
60
}
61
}
③在Feature类库中建立Feature文件夹,在Feature文件夹下建立Feature.xml文件,如下;

Feature.xml
1
<?xml version="1.0" encoding="utf-8" ?>
2
<Feature xmlns="http://schemas.microsoft.com/sharepoint/"
3
Id="27E28022-CBA3-470d-86BB-AC70E0F83B6A"
4
Title="客户管理"
5
Description="use Feature run EventHandler控制公司名称唯一"
6
Hidden="False"
7
Scope="Web"
8
ReceiverClass="BSpaceFeature.BSpaceFT"
9
ReceiverAssembly="BSpaceFeature, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d7b283ecb74bbf80">
10
</Feature>
④将Feature文件夹(其中包含feature.xml文件)拷贝到C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES文件夹下;
⑤在“开始”->运行 cmd 以后输入 cd C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN之后会进入BIN目录下然后在输入STSADM -o InstallFeature -filename Feature\Feature.xml -force来部署Fatrure
⑥在将写的Feature类生成的BSpaceFeature.dll和EventHandler类生成的BSpaceEventHandler.dll拖到GAC里面;
⑦重启iis即iisreset
⑧Feature部署完毕,在网站设置里的网站功能里面就会出现您所部署的Feature,一激活就OK了~!
注意:如果要卸载Feature只需要在⑤步里STSADM -o unInstallFeature -filename Feature\Feature.xml -force就搞定了~!去爽吧~!