如何将计算字段添加到AllContentType?

时间:2012-02-23 09:30:58

标签: sharepoint sharepoint-2010 sharepoint-2007

今天,我遇到问题是在我创建了一个计算字段之后。似乎没有办法添加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

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全明白你想要做什么,但是我可以对你想要做的事情的某些部分有所了解。

当您创建字段时,它会显示在您的网站操作中 - >网站设置 - >网站列。如果是这样,您已正确创建了这个。如果没有,如果您搜索谷歌,有数百个如何执行此操作的示例。

如果您创建了字段,则需要考虑要将其添加到的内容类型。获得这些内容类型后,您必须向内容类型添加一个称为字段链接的内容。

这不是我的代码,我已经从网上选择了它,但这应该做你需要的。

  SPContentType ct = web.ContentTypes[contentType];
  ct.FieldLinks.Add(new SPFieldLink(field));
  ct.Update();

干杯 Truez