2012-02-17 29 views
3

我正在以編程方式在Web方法中創建SharePoint 2010站點。當網站被創建時 - 它會觸發一個「功能激活」事件接收器。在這個事件接收器中,我正在網站上創建列表並向它們添加字段。<nativehr> 0x80070057</nativehr><nativestack></ nativestack>在Sharepoint列表中創建「選擇」字段時

我創建的一個字段是選擇字段(下拉列表)。我爲這個控件增加了幾個選擇選項,但是發現當網站被創建時,如果我下拉字段,那麼列表中沒有選項。我通過網絡研究意識到,我需要調用我選擇的更新方法。只要我這樣做,該網站的創建引發了一個例外與下面的描述: 0x80070057 不是很有幫助。

如果我註釋掉選擇字段的更新方法,則該站點再次創建沒有問題,但在下拉列表中沒有選項。

SPFieldChoice fldTransmittalStatus = 
(SPFieldChoice)newList.Fields.CreateNewField(Microsoft.SharePoint.SPFieldType.Choice.ToString(), Constants.FIELD_TRANSMITTAL_STATUS); 
newList.Fields.Add(fldTransmittalStatus);     
fldTransmittalStatus.EditFormat = SPChoiceFormatType.Dropdown; 
fldTransmittalStatus.Choices.Add("Sent"); 
fldTransmittalStatus.Choices.Add("Downloaded"); 
fldTransmittalStatus.Choices.Add("Received"); 
fldTransmittalStatus.Choices.Add("Resent"); 
fldTransmittalStatus.Choices.Add("Cancelled"); 
fldTransmittalStatus.Update(); // when present, this line causes the site creation to fail 
. . . . 
. . . . 
newList.Update(); 

我還在默認視圖中包含此字段。

SPView defaultView = newList.DefaultView; 
defaultView.ViewFields.Add(newList.Fields.GetField(Constants.FIELD_TRANSMITTAL_STATUS)); 

回答

1

試着打電話給你現場

+0

三江源的更新方法之前更新列表。這真的有幫助。 – tassieboy 2012-02-20 00:53:25

+0

原來,我不僅需要在更新列表之後添加選項選項,而且還需要將對象引用添加到列表中。 SPFieldChoice fldTransmittalStatus =(SPFieldChoice)newList.Fields [Constants.FIELD_TRANSMITTAL_STATUS]; – tassieboy 2012-02-20 00:54:25

相關問題