今天,我遇到问题是在我创建了一个计算字段之后。似乎没有办法添加AllContentTypes。而DefaultView,也许我可以处理这个问题。我也看到了这种方法:
spList.Fields.AddFieldAsXml(spFieldUser.SchemaXml, True, SPAddFieldOptions.AddToAllContentTypes);
但在这种情况下,我不确定我是否可以使用它。因为我的代码是:
//SPField tempSPField = spList.Fields.CreateNewField(createSPColumnObject.ColumnType, createSPColumnObject.ColumnName);//We can not use this code line for creating Calculated (there is no constructor for this)
SPFieldCollection collFields = spList.Fields;
string strSPFieldCalculatedName = collFields.Add(createSPColumnObject.ColumnName, SPFieldType.Calculated, false);
if (createSPColumnObject.IsAddedToDefaultView)
{
SPView spView = spList.DefaultView;
spView.ViewFields.Add(strSPFieldCalculatedName);
spView.Update();
}
SPFieldCalculated spFieldCalculated = null;
//
spFieldCalculated = (SPFieldCalculated)collFields[createSPColumnObject.ColumnName];
spFieldCalculated.ShowInDisplayForm = true;
//spFieldCalculated.ShowInEditForm = true;
spFieldCalculated.ShowInListSettings = true;
//spFieldCalculated.ShowInNewForm = true;
spFieldCalculated.ShowInViewForms = true;
//
spFieldCalculated.Description = createSPColumnObject.ColumnDescription;
spFieldCalculated.Formula = string.Format(@"={0}",createSPColumnObject.CalcFormula);
spFieldCalculated.Update();
//spList.Fields.AddFieldAsXml(spFieldCalculated.SchemaXml, createSPColumnObject.IsAddedToDefaultView, SPAddFieldOptions.AddToAllContentTypes);// also use this code line because we will get an exception with a duplicate column ID.
spFieldCalculated.OutputType = SPFieldType.Text;
spList.Update();
我完全创建了一个计算列但是如何将其添加到所有内容类型?大家可以帮帮我吗?顺便说一句,对于DefaultView,我确实喜欢上面的说法是对的吗?能告诉我这个吗?
我只是担心每个人都会产生误会?或者查看缺少的代码。那么大家可以清楚地看一下我的代码吗?谢谢大家。
非常感谢,:))
Standley Nguyen
答案 0 :(得分:0)
我不确定我是否完全明白你想要做什么,但是我可以对你想要做的事情的某些部分有所了解。
当您创建字段时,它会显示在您的网站操作中 - >网站设置 - >网站列。如果是这样,您已正确创建了这个。如果没有,如果您搜索谷歌,有数百个如何执行此操作的示例。
如果您创建了字段,则需要考虑要将其添加到的内容类型。获得这些内容类型后,您必须向内容类型添加一个称为字段链接的内容。
这不是我的代码,我已经从网上选择了它,但这应该做你需要的。
SPContentType ct = web.ContentTypes[contentType];
ct.FieldLinks.Add(new SPFieldLink(field));
ct.Update();
干杯 Truez