我以编程方式将SPFieldLookup
字段添加到列表中。
当我检查列表视图时,我发现查找字段就像是从用户inerface添加它而没有指定它链接到项目。
是否有方法强制将lookupfield以编程方式链接到项目?
答案 0 :(得分:1)
如果要配置SPFieldLookup字段所在的列表和目标列表,则会出现问题。因为SPFieldLookup字段需要通过其GUID分配目标列表,GUID是在激活功能时动态创建的。 并且您无法在字段定义中定义此值,因为它尚不存在。
此问题的解决方案是正常配置“源”列表和目标列表,但源列表中的SPFieldLookup字段除外。
然后,在功能激活事件中,您以编程方式添加此查找字段,现在可以完成,因为您已经(或至少可以找到)目标列表的GUID。
答案 1 :(得分:0)
这是我看到并希望分享的一个不错的片段 让我们假设我们已经创建了两个列表aList和bList。 要求是在aList中创建一个查找列,它将在bList中查找值。
SPList aList = web.Lists["aList"];
SPList bList = web.Lists["bList"];
aList.Fields.AddLookup("Lookup", bList.ID, false);
SPFieldLookup fldLookup = aList.Fields["Lookup"] as SPFieldLookup;
fldLookup.LookupField = bList.Fields[SPBuiltInFieldId.Title].InternalName;
fldLookup.Update();
答案 2 :(得分:-1)
之后是否填写了所有需要的属性(LookupField,LookupWebId,也许还有LookupList)和Update()字段?