Ich habe einen benutzerdefinierten Listenschablonentyp für SharePoint definiert. Ich installiere es mit VSeWSS 1.3 und alles scheint sich korrekt zu verhalten.Problem beim Hinzufügen eines Felds zu einem benutzerdefinierten Listentyp in SharePoint
Ich habe eine benutzerdefinierte Aktion hinzugefügt, die zusätzliche Spalten (SPFields) zur Liste hinzufügen wird. Jedes Mal, wenn dieser Code ausgeführt wird, wird jedoch die ArgumentException mit "Wert nicht im erwarteten Bereich" ausgelöst. Fehlermeldung. Dieses Verhalten scheint für benutzerdefinierte Typen spezifisch zu sein, wie in this blog post vorgeschlagen.
Hier der entsprechende Code ist (thisList ist eine Instanz meiner benutzerdefinierten Liste Vorlagentyp den Browser interace erstellt), die ein Feld mit dem SPFieldCollection von thisList hinzuzufügen versucht:
SPFieldType fieldType = Format2SPFieldType(format);
SPField field = new SPField(thisList.Fields, fieldType.ToString(), fieldName);
thisList.Fields.Add(field);
Die letzte Anweisung (thisList .Fields.Add (Feld)) führt die folgende Ausnahme:
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)
das gleiche Code ausführt nur in Ordnung, wenn das SPList Element die Basisliste ist (integrierte benutzerdefinierte Liste).
Gibt es Felder, die explizit im CAML und mit Hilfe der AddFieldAsXml() -Methode direkt machen diesen Code Arbeit mit benutzerdefinierter Liste Template-Typen festgelegt werden müssen?
Update: Ich sollte auch erwähnen, dass die Felder in einigen Fällen tatsächlich erstellt werden, obwohl der Aufruf eine Ausnahme auslöst!
Ich versuche, normale Typen wie die oben erwähnte hinzuzufügen. Die Funktion Format2SPFieldType gibt zurück und SPFieldType (es ist eine switch-Anweisung, die eine Formatzeichenfolge einem SPFieldType zuordnet). Bis jetzt habe ich SPFieldType.Text und SPFieldType.Boolean versucht. –