viernes, 9 de octubre de 2009

Crear Lista o Biblioteca Dinámicamente en SharePoint Services 3.0 o MOSS 2007 con C#

SharePoint Services 3.0 y SharePoint Server día a día se han vuelto herramientas mas y mas utilizadas por las empresas (Sitio Oficial), pero a veces las funcionalidades que vienen incluidas no son suficientes, y se nos solicita que hagamos desarrollos a la medida.
Tiene rato que trabajo con SharePoint, he trabajado mas del lado de Administración que del lado de Desarrollo, pero hace un tiempo tuve la necesidad de crear una biblioteca de manera dinámica en un proyecto ASP.NET con C#, buscando un poco de información sobre como hacerlo, me encontré con que SharePoint cuenta con una serie de Web Services que podemos utilizar para interactuar con el Servidor. Existen una gran cantidad de Web Services, (Lista completa de Web Services) pero aquí mostraré como crear una lista de manera dinámica…
1. Abrimos Visual Studio (en mi caso VS 2008) y creamos un nuevo Proyecto Web, le ponemos de nombre “ListaDinamica”
2. Vamos al Solution Explorer y damos clic derecho sobre nuestro proyecto->Add Web Reference
Aquí es donde viene la parte interesante, vamos a agregar la referencia a nuestro Web Service de SharePoint, estos se instalan en cada sitio que creemos y se encuentran en la siguiente ruta:
http://<site>/_vti_bin/nombreDelServicio
Donde el nombre del Servicio cambiara dependiendo cual será el que utilicemos, para este ejemplo será el d “Lists”:
http://<site>/_vti_bin/Lists.asmx
Colocamos nuestra URL y damos clic en el botón Go…Una vez que descubra el Web Service, colocamos un nombre en el campo de “Web Reference Name”, ejemplo: “ServicioSharepoint” y damos clic en el botón “Add Reference”…
Free Image Hosting at www.ImageShack.us
3. Ahora agregaremos unos controles a nuestra pagina para probar nuestro Web Service. Aquí sus propiedades:
Control
ID
Text
LabellblTipoListaTipo de Lista:
LabellblNombreNombre:
LabellblDescipcionDescripción:
LabellblResultadoSharepoint
TextBoxtxtNombre
DropDownListddlTipo
TextBoxtxtDescripcion
ButtonbtnCrearCrear
Nos quedaría algo así:
4. Ahora vamos a la parte del código de nuestra pagina, y en el evento Load agregamos el Siguiente código:
 protected void Page_Load(object sender, EventArgs e)
 {
 ddlTipo.Items.Add(new ListItem("Announcements", "104"));
 ddlTipo.Items.Add(new ListItem("Contacts", "105"));
 ddlTipo.Items.Add(new ListItem("Custom List", "100"));
 ddlTipo.Items.Add(new ListItem("Custom List in Datasheet View", "120"));
 ddlTipo.Items.Add(new ListItem("DataSources", "110"));
 ddlTipo.Items.Add(new ListItem("Discussion Board", "108"));
 ddlTipo.Items.Add(new ListItem("Document Library", "101"));
 ddlTipo.Items.Add(new ListItem("Events", "106"));
 ddlTipo.Items.Add(new ListItem("Form Library", "115"));
 ddlTipo.Items.Add(new ListItem("Issues", "1100"));
 ddlTipo.Items.Add(new ListItem("Links", "103"));
 ddlTipo.Items.Add(new ListItem("Picture Library", "109"));
 ddlTipo.Items.Add(new ListItem("Survey", "102"));
 ddlTipo.Items.Add(new ListItem("Tasks", "107"));
}


Esto agregar al DropDownList los diferentes tipos de Listas que podemos crear con el Web Service de SharePoint.
Para mas información ver:
http://msdn.microsoft.com/en-us/library/lists.lists.addlist.aspx

5. En la vista de diseño vamos a dar doble clic sobre el botón crear y agregamos el siguiente código:
protected void btnCrear_Click(object sender, EventArgs e)
    {
        System.Net.NetworkCredential credenciales = new System.Net.NetworkCredential("usuarioSharepoint","PasswordSharepoint", "DominioSharepoint");
        ServicioSharePoint.Lists servicioList = new ServicioSharePoint.Lists();
        servicioList.Credentials = credenciales;
        XmlNode ndList = servicioList.AddList(txtNombre.Text, 
        txtDescripcion.Text, int.Parse(ddlTipo.SelectedValue));
        lblResultadoSharepoint.Text= ndList.OuterXml;
    }

Si examinamos el código vemos que primero creamos un Objeto de tipo NetworkCredential, donde le mandamos al constructor el Usuario, Password y el dominio de nuestro sitio de SharePoint, tiene que ser un usuario valido y además tener permisos para crear Listas.
Después creamos una instancia de nuestro Servicio de SharePoint y le asignamos las credenciales, para que las utilice al momento de invocar el Web Service.
En la siguiente instrucción donde mandamos llamar el método AddList del Servicio observamos que lo que nos devuelve es un XmlNode, que es donde viene toda la información  de la lista creada en el Sitio. Por simplicidad del ejemplo solo lo coloque en una etiqueta, pero tal vez ustedes puedan mostrar la información al usuario con un poco de mas formato.
Para que este código funcione de manera adecuada hay que agregar una referencia a:
System.Xml;
6. Probamos nuestro código y vemos los resultados en nuestro sitio de SharePoint:


Como pueden ver no es tan complicado como podemos pensar, si necesitan mas información sobre el Servicio Lists visiten:
http://msdn.microsoft.com/en-us/library/lists.aspx

Y mas Información sobre los Web Service de SharePoint y el alcance de los mismos, chequen:

http://msdn.microsoft.com/en-us/library/dd878586.aspx

Saludos y hasta la próxima.

No hay comentarios.: