我无法弄清楚如何将自定义列类型添加到包含对象模型的列表中。
SPFieldCollection.Add()有一个参数SPFieldType,但它必须是Microsoft.SharePoint.SPFieldType枚举中的枚举值之一,因此它不能用于创建自定义类型的列。
我接下来尝试使用SPFieldCollection.CreateNewField(),但是当我在返回的值上调用SPField.Update()时,我得到一个异常:“ArgumentException未处理。值不在预期范围内。”。
我在这里看到对SPFieldCollection.AddFieldAsXml()的引用:How do I add custom column to existing WSS list template但几乎没有任何信息,我不确定这是正确的选择。
更新:我在AddFieldAsXml上发现了一篇帖子:http://weblogs.asp.net/bsimser/archive/2005/07/21/420147.aspx,事实证明它非常简单,对我来说效果很好。无论如何都希望它会帮助别人。
答案 0 :(得分:3)
SPFieldCollection.AddFieldAsXml()是我可以告诉你的方法。请参阅此处以获取示例:http://weblogs.asp.net/bsimser/archive/2005/07/21/420147.aspx
答案 1 :(得分:1)
Try with:
SPField newField = null;
newField= web.Fields.CreateNewField("MyFieldTypeName", fieldName);
web.Fields.Add(newField);
newField = web.Fields[fieldName];
// set some properties
newField.ShowInDisplayForm = false;
newField.ShowInViewForms = true;
newField.Update();