2012-02-23 65 views
1

今天,我有一个问题是我创建了一个计算字段后。似乎没有办法添加AllContentTypes。而DefaultView,也许我可以处理这个。我也看到了这种方法:如何将计算字段添加到AllContentType?

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(); 

我完全创建了一个计算列,但是如何将它添加到allcontent类型?大家可以帮我解决这个问题吗?顺便说一句,到DefaultView,我确实喜欢上面的是对的? eveybody能让我知道吗?

我只是担心每个人都会误解?或者检查丢失的代码。那么每个人都可以清楚地看看我的代码吗?谢谢大家。

非常感谢,:)

斯坦德利阮

回答

0

我不知道如果我完全明白你正在尝试做的,但是我或许可以揭示你是什么一些地方一些轻试图去做。

当您创建您的字段时,它会出现在您的网站操作 - >网站设置 - >网站列中。如果是这样你已经正确创建了这个。如果它不存在数百个如何搜索谷歌的例子。

一旦你有了你的领域创建你,然后需要考虑你想添加它的内容类型。一旦你有了这些内容类型,你就必须在内容类型中添加一个称为字段链接的东西。

这不是我的代码,我把它从网上拿走了,但是这应该做你需要的。

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

干杯 Truez

+0

嗨干杯Truez,首先,感谢接听和关注我的帖子:) **我想我错过了一点信息。这就是我正在编写一个列表,其中包含列表中的计算字段,而不是为网站列创建列。 2这些东西是不同的。此外,我也根据上面的代码做了,但是无法计算字段。所以,那不是我所需要的。**非常感谢你。 – 2012-03-08 03:43:37

相关问题