Pergunta

eu ter definido um lista personalizada tipo de modelo para SharePoint . Eu instalá-lo usando VSeWSS 1.3 e tudo parece se comportar corretamente.

Eu adicionei uma ação personalizada que irá adicionar colunas adicionais (SPFields) à lista . No entanto, cada vez que o código executa lançamentos e ArgumentException com um 'Valor não no intervalo esperado.' mensagem de erro. Este comportamento parece ser específica para tipos personalizados, como sugerido na este post .

Aqui está o código relevante (thisList é uma instância da minha lista personalizada tipo de modelo criado usando o interace browser) que tenta adicionar um campo ao SPFieldCollection de thisList:

                SPFieldType fieldType = Format2SPFieldType(format);
                SPField field = new SPField(thisList.Fields, fieldType.ToString(), fieldName);
                thisList.Fields.Add(field);

A última declaração (thisList.Fields.Add (campo)) lança a seguinte exceção:

   Message  "Value does not fall within the expected range."

   at Microsoft.SharePoint.SPFieldCollection.GetFieldByInternalName(String strName, Boolean bThrowException)
   at Microsoft.SharePoint.SPFieldCollection.GetFieldByInternalName(String strName)
   at Microsoft.SharePoint.SPFieldCollection.AddFieldAsXmlInternal(String schemaXml, Boolean addToDefaultView, SPAddFieldOptions op)
   at Microsoft.SharePoint.SPFieldCollection.AddFieldAsXml(String schemaXml, Boolean addToDefaultView, SPAddFieldOptions op)
   at Microsoft.SharePoint.SPFieldCollection.Add(SPField field)

Este mesmo executa o código apenas multa se o item SPList é o tipo de lista de base (built-in lista personalizada).

Existem campos que precisam ser explicitamente definido no CAML e usando o método AddFieldAsXml () diretamente para fazer este trabalho de código com lista personalizada tipos de modelo?

Update:! Gostaria também de mencionar que os campos são realmente criado em alguns casos, mesmo que a chamada lança uma exceção

Foi útil?

Solução

Acontece que isso foi causado porque chamando thisList.SchemaXML colocar o objeto SPList em um estado que eu não era capaz de recuperar! Obter uma nova referência à mesma lista SharePoint, por exemplo, SPList newList = thisList.ParentWeb.Lists [thisList.ID] resolveu o problema!

Outras dicas

O que é o tipo de campo que você está tentando adicionar? é que um campo interno ou um tipo de campo personalizado, o que faz este Função retorno Format2SPFieldType? Se for um campo Inbuilt você pode tentar adicionar com o

thisList.Fields.Add("DisplayName", SPFieldType.Integer, false);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top