这里我们用代码创建一个带有Lookup字段(名为: LookupStaffName)的List (名为:TestSale),它的Lookup字段从另一个名为SaleStaff的List中获取。
因此,我们首先在我们的测试网站上手工创建一个List,命名为SaleStaff,并输入测试数据如下
然后使用如下代码去创建TestSale这个List
string siteURL =
"
http://MyTestSite:1200/
";
//
此处换成你自己的站点地址
using (SPSite site = new SPSite(siteURL))
{
using (SPWeb web = site.AllWebs[ 0])
{
// 先在我们的测试站点添加一个名叫TestSaleStaff的List.
Guid newListGuid = web.Lists.Add( " TestSale ", " Used for test lookup field. ", SPListTemplateType.GenericList);
SPList newList = web.Lists[newListGuid]; // 取得刚才添加的List.
// 给TestSaleStaff这个List添加一个普通文本类型的字段.
SPField fldProductName = (SPFieldText)newList.Fields.CreateNewField(SPFieldType.Text.ToString(), " ProductName ");
fldProductName.Description = " Add a common test text type field named ProductName ";
fldProductName.Required = true; // 在新建项目时,此字段是否是必填的.
newList.Fields.Add(fldProductName);
// 给TestSaleStaff这个List添加一个Lookup类型的字段.
string fieldName = " LookupStaffName "; // 设置fieldName参数,即新增的Lookup类型字段的名字
SPList lookupList = web.Lists[ " SaleStaff "]; // 设置这个Lookup类型字段要从哪个List中去取值
Guid lookupGuid = new Guid(lookupList.ID.ToString()); // 取得这个Lookup数据源List的Guid
newList.Fields.AddLookup(fieldName, lookupGuid, false); // 把上面取得的参数引入到AddLookup方法中,从而创建一个Lookup字段
SPFieldLookup splookup = newList.Fields[fieldName] as SPFieldLookup; // 绑定数据List到Lookup字段
splookup.LookupField = lookupList.Fields[ " Title "].InternalName;
splookup.Update();
newList.Update();
}
}
// 此处可以显示操作结果信息
using (SPSite site = new SPSite(siteURL))
{
using (SPWeb web = site.AllWebs[ 0])
{
// 先在我们的测试站点添加一个名叫TestSaleStaff的List.
Guid newListGuid = web.Lists.Add( " TestSale ", " Used for test lookup field. ", SPListTemplateType.GenericList);
SPList newList = web.Lists[newListGuid]; // 取得刚才添加的List.
// 给TestSaleStaff这个List添加一个普通文本类型的字段.
SPField fldProductName = (SPFieldText)newList.Fields.CreateNewField(SPFieldType.Text.ToString(), " ProductName ");
fldProductName.Description = " Add a common test text type field named ProductName ";
fldProductName.Required = true; // 在新建项目时,此字段是否是必填的.
newList.Fields.Add(fldProductName);
// 给TestSaleStaff这个List添加一个Lookup类型的字段.
string fieldName = " LookupStaffName "; // 设置fieldName参数,即新增的Lookup类型字段的名字
SPList lookupList = web.Lists[ " SaleStaff "]; // 设置这个Lookup类型字段要从哪个List中去取值
Guid lookupGuid = new Guid(lookupList.ID.ToString()); // 取得这个Lookup数据源List的Guid
newList.Fields.AddLookup(fieldName, lookupGuid, false); // 把上面取得的参数引入到AddLookup方法中,从而创建一个Lookup字段
SPFieldLookup splookup = newList.Fields[fieldName] as SPFieldLookup; // 绑定数据List到Lookup字段
splookup.LookupField = lookupList.Fields[ " Title "].InternalName;
splookup.Update();
newList.Update();
}
}
// 此处可以显示操作结果信息
运行代码后,在网站中可以看到这个新建的List,修改它的View,使我们新建的Field可见,并试着输入新记录到这个List中,如下: