Hoy me he encontrado que algo tan “sencillo”, como añadir “options” a un campo de tipo SPFieldChoice, no es tan sencillo cuando lo hacemos en SharePoint online.

Si queremos añadir una opción más a un campo dado, el código sería tan sencillo como:


Si eso mismo, lo desplegamos en una solución de granja, funciona perfectamente.

Sin embargo, si lo hacemos en una solución sandbox, no obtendremos ningún error, pero la opción nunca se añadirá al SPFieldChoice.

En principio, la clase SPFieldChoice es perfectamente válida en Sandboxed solutions, su propiedad Choices también lo es.

El motivo lo desconozco por completo, y además, me parece rarísimo, ya que he revisado con Reflector el código del método UpdateInternal, y me parece de lo más sencillo, así que no me explico que puede haber diferente en la dll de la Sandbox, para que no funcione.

Por suerte, sí tenemos solución, y es tan “sencilla”, como editar la propiedad SchemaXml, y añadirle el XML necesario para la nueva Opción. Aquí podemos ver un ejemplo:


Esto lo podemos hacer bien sencillo con LINQ to XML:


Y así, podemos añadir una nueva opción a nuestro campo SPFieldChoice en soluciones Sandbox.

Saludos!!