locked
Desarrollo en Sharepoint VSEWSS vs SP Designer RRS feed

  • Pregunta

  • Hola a todos!

    Estoy empezando un proyecto de sharepoint para llevar la inteligencia de negocio de una empresa (seguimiento de objetivos basicamente).
    He encontrado dos vías para empezar el proyecto: Visual Studio Extensions for Sharepoint y Sharepoint Designer de Office.

    Una vez instalado y bien configurado Sharepoint en el servidor he podido crear sitios y listas personalizadas con la extensión de Visual Studio. El problema es el siguiente:
    No he podido acceder a los formularios de esas listas para personalizarlos (NewForm.aspx, EditForm.aspx y DisplayForm.aspx), el aspx en si he podido verlo en el Visual Studio pero no he podido personalizar la parte donde se mostrarían los campos del usuario.

    En cambio desde el designer si que he podido crearme unos nuevos formularios personalizados y ponerlos por defecto por los anteriores para visualizar, editar y crear un nuevo item en la lista. El problema es que no puedo ver estos nuevos formularios en el proyecto en Visual Studio, ¿ se puede editar estos nuevos formularios con el visual studio con la extensión  de Sharepoint?  ¿Es mejor trabajar con los formularios por defecto directamente en el Visual Studio sin hacer nada en el Designer?

    Siento mi ignorancia pero soy nuevo trabajando en esto del Sharepoint. Gracias a todos.
    jueves, 30 de julio de 2009 13:54

Respuestas

  • Hola Jaime:

    SP Designer y Visual Studio apuntan a usuarios distintos.

    El primero es una herramienta pensada para un usuario avanzado y cualquier modificación que hagas queda registrada en la base de datos. Si creas una página ASPX no se almacena en el file system.

    Visual Studio es una herramienta para el desarrollador. Si creas una página se almacena el en el File System. Además puedes trabajar con herramientas muy potentes como eventos, webparts, ajax, workflows, etc. Facilita más el deployment entre muchas cosas más.

    Si eres un desarrollador, ni lo dudes: no utilices sharepoint designer.

    Te recomiendo que leas el capítulo 2 y 3 del libro Inside Microsoft Windows SharePoint Services 3.0. Ahí encontraras una conceptual y excelente explicación del tema.

    Espero que esto te haya sido útil.

    Juan Pablo
    http://surpoint.blogspot.com/
    viernes, 31 de julio de 2009 15:35

Todas las respuestas

  • Hola Jaime:

    SP Designer y Visual Studio apuntan a usuarios distintos.

    El primero es una herramienta pensada para un usuario avanzado y cualquier modificación que hagas queda registrada en la base de datos. Si creas una página ASPX no se almacena en el file system.

    Visual Studio es una herramienta para el desarrollador. Si creas una página se almacena el en el File System. Además puedes trabajar con herramientas muy potentes como eventos, webparts, ajax, workflows, etc. Facilita más el deployment entre muchas cosas más.

    Si eres un desarrollador, ni lo dudes: no utilices sharepoint designer.

    Te recomiendo que leas el capítulo 2 y 3 del libro Inside Microsoft Windows SharePoint Services 3.0. Ahí encontraras una conceptual y excelente explicación del tema.

    Espero que esto te haya sido útil.

    Juan Pablo
    http://surpoint.blogspot.com/
    viernes, 31 de julio de 2009 15:35
  • Muchas gracias Juan Pablo,
    ahora mismo me pongo a leerme los capitulos 2 y 3 de este libro. Seguro que me sirven de gran ayuda.

    Saludos.
    lunes, 3 de agosto de 2009 8:07
  • De nada Jaime.
    Cualquier duda avisa.
    Saludos,

    Juan Pablo
    http://surpoint.blogspot.com/
    lunes, 3 de agosto de 2009 13:05
  • ¿Para poder personalizar las paginas NewForm.aspx, EditForm.aspx y DisplayForm.aspx de una lista mediante VSEWSS se debería de personalizar el feature de esa lista?
    ¿Se puede importar al proyecto de VSEWSS la página copiada del Designer guardandola fuera de  la base de datos del sitio SharePoint?
    miércoles, 12 de agosto de 2009 11:20
  • A ver...para poder personalizar las páginas puedes hacerlo de dos maneras:

    - SharePoint Designer: personalizar directamente los ficheros, convertiéndolos de esa manera en "customized" (desconectados de la definición en el disco)
    - Hacer las páginas en ASPX con el código codebehind en una DLL y cambiar la definición de la lista para incluir esos ficheros y asociarlos como formularios de edición.

    Puedes hacer lo que comentas, pero con cuidado porque si un formulario está "customizado" oculta el control estándar de SharePoint de edición de un elemento y este es necesario para que funcione. Lo digo porque a veces es fácil cargártelo sin darte cuenta.
    -- Edin http://edinkapic.blogspot.com
    miércoles, 12 de agosto de 2009 18:42
    Moderador
  • Hola Edin,

    lo primero gracias por responder.

    Ya he probado a modificar las páginas con el Designer pero al hacerlo de esta manera me limitan funcionalidades al no poder trabajar con ellas con la extensión.

    El problema al intentar hacerlo en Visual Studio mediante la extensión para SharePoint. Pero no entiendo muy bien lo de cambiar la definición de la lista y cambiar las páginas. ¿Te refieres a crear unas nuevas páginas y meterlas en el feature de la lista? ¿El codebehind como se puede agregar al proyecto de la extensión? (sólo he podido realizarlo a través de una solución manualmente con STSADM).

    No se, a lo mejor estoy confundiendo conceptos. Si tienes algún ejemplo concreto ............. la verdad que estoy bastante estancado.

    Muchas Gracias por tu tiempo y Saludos.
    miércoles, 12 de agosto de 2009 19:24
  • Te pongo un ejemplo reciente de un proyecto.

    en el esquema de la definición de la lista defino el formulario nuevo:

                <Form Type="EditForm" Url="MyEditForm.aspx"  WebPartZoneID="Main" />

    pongo el fichero MyEditForm.aspx en la carpeta donde está el esquema de la lista, su contenido importante es:

    <%@ Page language="C#" MasterPageFile="~masterurl/default.master" Inherits="MyNamespace.MyEditForm, MyAssembly, Version=1.0.0.0,  Culture=neutral,  PublicKeyToken=7b6fbc73b2ad36ff" meta:webpartpageexpansion="full" meta:progid="SharePoint.WebPartPage.Document" %>
    
    <%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" 
    Assembly="Microsoft.SharePoint, 
    Version=12.0.0.0, 
    Culture=neutral, 
    PublicKeyToken=71e9bce111e9429c" %> 
    
    <%@ Register Tagprefix="Utilities" 
    Namespace="Microsoft.SharePoint.Utilities" 
    Assembly="Microsoft.SharePoint, 
    Version=12.0.0.0, 
    Culture=neutral, 
    PublicKeyToken=71e9bce111e9429c" %> 
    
    <%@ Import Namespace="Microsoft.SharePoint" %> 
    <%@ Import Namespace="MyNamespace" %> 
    
    <%@ Register Tagprefix="WebPartPages" 
    Namespace="Microsoft.SharePoint.WebPartPages" 
    Assembly="Microsoft.SharePoint, 
    Version=12.0.0.0, 
    Culture=neutral, 
    PublicKeyToken=71e9bce111e9429c" %>
    
    
    <%@ Register TagPrefix="wssuc" TagName="ToolBar" src="~/_controltemplates/ToolBar.ascx" %>
    <%@ Register TagPrefix="wssuc" TagName="ToolBarButton" src="~/_controltemplates/ToolBarButton.ascx" %>
    
    
    <asp:Content ID="Content1" ContentPlaceHolderId="PlaceHolderPageTitle" runat="server">
    	<SharePoint:ListFormPageTitle runat="server"/>
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderId="PlaceHolderPageTitleInTitleArea" runat="server">
    	<SharePoint:ListProperty Property="LinkTitle" runat="server" id="ID_LinkTitle"/>
    	
    	<SharePoint:ListItemProperty id="ID_ItemProperty" MaxLength=40 runat="server"/>
    </asp:Content>
    <asp:Content ID="Content3" ContentPlaceHolderId="PlaceHolderPageImage" runat="server">
    	<IMG SRC="/_layouts/images/blank.gif" width=1 height=1 alt=""></asp:Content>
    <asp:Content ID="Content4" ContentPlaceHolderId="PlaceHolderLeftNavBar" runat="server"/>
    <asp:Content ID="Content5" ContentPlaceHolderId="PlaceHolderMain" runat="server">
    
    		<SPAN id='part1'>
    		    <SharePoint:FormDigest runat="server" />
    
    
    (no te lo he puesto entero porque no es importante, fijate que defino los controles ListProperty y ListItemProperty en el ASPX.


    El fichero de codebehind es el siguiente:

    namespace MyNamespace
    {
        public class MyEditForm : System.Web.UI.Page
        {
            private bool _error = false;
            private TextBox tBActivitat, tBClient, tBProveidor;
            private DropDownList Activitat, Client, Proveidor;
            private ImageButton btnBClient, btnBActivitat, btnProveidor;
            private Label lblErrorActivitat, lblErrorClient, lblErrorProveidor;
            protected Button btnSubmit;
    
    
    Este codigo se compila en la DLL que se meterá en la GAC como parte de la feature al deployar la solución (fichero WSP).

    Espero haber aclarado algo,

    -- Edin http://edinkapic.blogspot.com
    jueves, 13 de agosto de 2009 13:12
    Moderador
  • Gracias Edin, vamos a probar.

    Saludos.
    viernes, 14 de agosto de 2009 8:03
  • La verdad que no se porque no se me llega a ver la pagina cuando intento acceder a ella, me sale como que no la encuentra. Bueno paso por paso a ver si he hecho algo de manera incorrecta.

    He agregado a mi lista personalizada (Prueba) el archivo MyNewForm.aspx, primero en la carpeta de mi lista "Prueba" y despues he agregado dicho archivo en la carpeta "Templates/FEATURES/Prueba/Prueba" tambien dentro de mi proyecto, anteriormente he creado una Plantilla en mi proyecto SP con la extensión para acceder directamente desde aquí a la carpetas de los features de mi sitio. Y creo que todo va bien hasta el momento porque en la vista WSP me aparece mi pagina MyNewForm.aspx en el feature de la mi lista Prueba. El archivo feature.xml queda de la siguiente manera:

    <?xml version="1.0" encoding="utf-8"?>
    <Feature Id="8f1b3372-e954-498b-8a1d-fe31d9a8b8fd" Title="Prueba" Scope="Web" Version="1.0.0.0" Hidden="FALSE" DefaultResourceFile="core" xmlns="http://schemas.microsoft.com/sharepoint/">
      <ElementManifests>
        <ElementManifest Location="Prueba\ListDefinition.xml" />
        <ElementFile Location="Prueba\schema.xml" />
        <ElementFile Location="Prueba\AllItems.aspx" />
        <ElementFile Location="Prueba\DispForm.aspx" />
        <ElementFile Location="Prueba\EditForm.aspx" />
        <ElementFile Location="Prueba\NewForm.aspx" />
        <ElementFile Location="Prueba\MyNewForm.aspx" />
      </ElementManifests>
    </Feature>
    Despues de esto modifico el schema.xml de la lista Prueba para que cuando intente añadir un nuevo elemento a la lista abra MyNewForm.aspx en lugar de NewForm.aspx. Quedaria de esta manera:

    <Forms>
         <Form Type="DisplayForm" Url="DispForm.aspx" WebPartZoneID="Main"/>
         <Form Type="EditForm" Url="EditForm.aspx" WebPartZoneID="Main"/>
         <!--<Form Type="NewForm" Url="NewForm.aspx" WebPartZoneID="Main"/>-->
         <Form Type="NewForm" Url="MyNewForm.aspx" WebPartZoneID="Main"/>
    </Forms>
    Al generar me da un error como que no se encuentra NewForm.aspx asi que comento en el feature la linea donde se declara en el manifiesto.
    Vuelvo a generar y todo perfecto. Voy a mi sitio Sharepoint, intento insertar un nuevo elemento sólo para ver si me muestra MyNewForm.aspx pero no encuentra la página el navegador. La verdad que no tengo ni idea idea de por qué.

    Aquí esta el código de MyNewForm.aspx al completo, es algo muy sencillo para que muestre un simple Hola en el PlaceHolderMain.

    <%@ Page MasterPageFile="~masterurl/default.master" 
    Inherits="ProyectoPruebas.Prueba.MyNewForm, ProyectoPruebas, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f4da00116c38ec5" 
    meta:webpartpageexpansion="full" meta:progid="SharePoint.WebPartPage.Document" %>
    
    <%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" 
    Assembly="Microsoft.SharePoint, 
    Version=12.0.0.0, 
    Culture=neutral, 
    PublicKeyToken=71e9bce111e9429c" %> 
    
    <%@ Register Tagprefix="Utilities" 
    Namespace="Microsoft.SharePoint.Utilities" 
    Assembly="Microsoft.SharePoint, 
    Version=12.0.0.0, 
    Culture=neutral, 
    PublicKeyToken=71e9bce111e9429c" %> 
    
    <%@ Import Namespace="Microsoft.SharePoint" %> 
    <%@ Import Namespace="ProyectoPruebas.Prueba" %> 
    
    <%@ Register Tagprefix="WebPartPages" 
    Namespace="Microsoft.SharePoint.WebPartPages" 
    Assembly="Microsoft.SharePoint, 
    Version=12.0.0.0, 
    Culture=neutral, 
    PublicKeyToken=71e9bce111e9429c" %>
    
    
    <%@ Register TagPrefix="wssuc" TagName="ToolBar" src="~/_controltemplates/ToolBar.ascx" %>
    <%@ Register TagPrefix="wssuc" TagName="ToolBarButton" src="~/_controltemplates/ToolBarButton.ascx" %>
    
    
    <asp:Content ID="Content1" ContentPlaceHolderId="PlaceHolderPageTitle" runat="server">
    	<SharePoint:ListFormPageTitle ID="ListFormPageTitle1" runat="server"/>
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderId="PlaceHolderPageTitleInTitleArea" runat="server">
    	<SharePoint:ListProperty Property="LinkTitle" runat="server" id="ID_LinkTitle"/>
    	
    	<SharePoint:ListItemProperty id="ID_ItemProperty" MaxLength=40 runat="server"/>
    </asp:Content>
    <asp:Content ID="Content3" ContentPlaceHolderId="PlaceHolderPageImage" runat="server">
    	<IMG SRC="/_layouts/images/blank.gif" width=1 height=1 alt=""></asp:Content>
    <asp:Content ID="Content4" ContentPlaceHolderId="PlaceHolderLeftNavBar" runat="server"/>
    <asp:Content ID="Content5" ContentPlaceHolderId="PlaceHolderMain" runat="server">
        Hola Hola
    </asp:Content>
    


    ¿alguna idea de por qué puede ser?

    Muchas Gracias y saludos a todos
    viernes, 14 de agosto de 2009 12:17
  • Jaime, has verificado que no se trate de un problema de URL? Quizá si ponés el path relativo, pero empezando desde "\_layouts\..."...

    Juan Pablo.
    http://surpoint.blogspot.com/
    viernes, 14 de agosto de 2009 14:03
  • Hola Juan Pablo

    ¿A qué URL te refieres? ¿a la del schema.xml cuando en tag Form o a la del feature?

    De todas maneras he probado a meterla también en la carpeta LAYOUTS y ponerle la ruta en el schema.xml desde alli y nada ........ no se la verdad donde puede estar el error.

    <Forms>
    	<Form Type="DisplayForm" Url="DispForm.aspx" WebPartZoneID="Main"/>
    	<Form Type="EditForm" Url="EditForm.aspx" WebPartZoneID="Main"/>
    	<!--<Form Type="NewForm" Url="NewForm.aspx" WebPartZoneID="Main"/>-->
    	<Form Type="NewForm" Url="/_layouts/MyNewForm.aspx" WebPartZoneID="Main"/>
    </Forms>


    Gracias.
    • Editado jaime35740 lunes, 17 de agosto de 2009 12:30
    viernes, 14 de agosto de 2009 19:42