Crear items con servicios REST de diferentes tipos de contenido

Otra duda que se nos ha planteado es la creación de items en una lista o biblioteca de diferentes tipos de contenido utilizando servicios REST en  SharePoint 2010.

Previamente ya habíamos visto como Listar, añadir, modificar y borrar información con REST en SharePoint 2010, pero partíamos que la lista o biblioteca solo tenia un tipo de contenido por defecto. Ahora se nos plantea un complicación mas, que es crear un ítem de un tipo de contenido concreto.

Suponemos que tenemos la lista “DemoList” a la cual tiene el tipo de contenido por defecto “Elemento” y le hemos añadido un segundo tipo de contenido llamado “Anuncio”.

Ahora queremos añadir un nuevo item de tipo “Anuncio”… lo que deberíamos hacer es definir ese nuevo item y especificar su tipo de contenido:

static void CreateDataContentType()
{
	//recupera la informacion del servicio 
	DevPortalHomeDataContext dataContext = new DevPortalHomeDataContext(new Uri("http://servidor/_vti_bin/listdata.svc/"));
	dataContext.Credentials = CredentialCache.DefaultNetworkCredentials; 
	//crea y define un nuevo item en la lista DemoList (definimos el Content Type)
	DemoListItem demoListItem = new DemoListItem()
	{
		ContentType = "Announcement",
		Title = "Registro de tipo contenido Anuncio",
		Cuerpo = "Cuerpo del anuncio"
	};
	//añade el item a la lista
	dataContext.AddToDemoList(demoListItem);
	dataContext.SaveChanges();
	Console.WriteLine("Registro creado correctamente");
}

En el caso de no especificar el campo ContentType, SharePoint asume que el nuevo item, es del tipo de contenido predeterminado.

En la siguiente imagen se puede apreciar, como el nuevo registro añadido con esta función, es de tipo “Anuncio”:

 Es importante saber que has de conocer los posibles tipos de contenido de la lista en cuestión, ya que no hay forma de saber (ni siquiera con los metadatos: http://servidor/_vti_bin/listdata.svc/$metadata) de los posibles valores del campo: <Property Name=”TipoDeContenido” Type=”Edm.String” Nullable=”true” />.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *