Domanda

Ho definito una elenco personalizzato tipo di modello per SharePoint . Lo installo con VSeWSS 1.3 e tutto sembra comportarsi in modo corretto.

Ho aggiunto un'azione personalizzata che sarà aggiungere ulteriori colonne (SPFields) all'elenco . Tuttavia, ogni volta che il codice viene eseguito getta e ArgumentException con un 'Valore non nel range previsto.' messaggio di errore. Questo comportamento sembra essere specifico per tipi personalizzati come suggerito nel questo post del blog .

Ecco il codice in questione (thisList è un esempio di mia abitudine tipo di elenco modello creato utilizzando l'interace browser) che cerca di aggiungere un campo alla SPFieldCollection di thisList:

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

L'ultima istruzione (thisList.Fields.Add (campo)) genera la seguente eccezione:

   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)

Lo stesso codice viene eseguito bene se l'elemento SPList è il tipo di elenco di base (built-in elenco personalizzato).

Ci sono i campi che devono essere impostare in modo esplicito nella CAML e con il metodo del AddFieldAsXml () direttamente a fare questo lavoro di codice con elenco personalizzato tipi di modello?

Aggiornamento: Vorrei anche ricordare che i campi sono in realtà creati in alcuni casi anche se la chiamata genera un'eccezione

!
È stato utile?

Soluzione

scopre che questo è stato causato perché chiamando thisList.SchemaXML mettere l'oggetto SPList in uno stato che non ero in grado di recuperare da! Ottenere un nuovo riferimento allo stesso elenco di SharePoint, ad esempio, SPList newList = thisList.ParentWeb.Lists [thisList.ID] risolto il problema!

Altri suggerimenti

Qual è il tipo di campo che si sta tentando di aggiungere? è che un campo interno o di un tipo di campo personalizzato, che cosa fa questa funzione Format2SPFieldType ritorno? Se si tratta di un campo Inbuilt si può provare ad aggiungere il

thisList.Fields.Add("DisplayName", SPFieldType.Integer, false);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top