none
Mantener GUID en listas al hacer Import RRS feed

  • Pregunta

  • Hola,
    Me he encontrado con un problema al intentar hacer un import sobre un entorno de desarrollo distinto del mio. El problema viene dado por los GUID de las listas. He probado con distintos tipos de webparts para acceder a la lista de paginas para mostrar su contenido y ninguno me lo acepta:
    - Web part lista de paginas
    - Elemento web consulta de contenido
    - DataView desde el Designer.

    En mi equipo todo va a las mil maravillas, pero a la hora de importarlo en el otro entorno, esas webparts no se visualizan ya que trata de acceder a una lista cuyo GUID no se mantiene durante el import.

    Por tanto, mi pregunta seria, como solucionar eso?, cambiando el guid de una lista (cosa un tanto complicada Rolling Eyes ), ejecutar una sentencia del stsadm con algun parametro que me conserve lso GUID de las listas durante el proceso import/export....en fin, algo

    Muchas gracias de antemano
    Saludos
    jueves, 19 de marzo de 2009 8:22

Respuestas

  • Hola, el problema viene porque no se puede especificar el GUID de la instancia de una lista. Verás que en las especificaciones ListInstance Element (List Instance) que solo puedes indicar un identificador entero pero que no corresponde con el guid.

    Una solución para importar los webparts es acceder por nombre en lugar por GUID. Tienes un ejemplo en Page Templates con ayuda del Sharepoint Designer.
    Esto también afecta a los campos Lookup que tuvieras, ya que apunta al GUID de la lista antigua, y al utilizarlos en la nueva colección no funcionarán porque no la encuentran.

    http://geeks.ms/blogs/mcortes/ http://mariocortesflores.blogspot.com/
    • Marcado como respuesta Jandrus I viernes, 20 de marzo de 2009 13:43
    jueves, 19 de marzo de 2009 18:57

Todas las respuestas

  • Hola, el problema viene porque no se puede especificar el GUID de la instancia de una lista. Verás que en las especificaciones ListInstance Element (List Instance) que solo puedes indicar un identificador entero pero que no corresponde con el guid.

    Una solución para importar los webparts es acceder por nombre en lugar por GUID. Tienes un ejemplo en Page Templates con ayuda del Sharepoint Designer.
    Esto también afecta a los campos Lookup que tuvieras, ya que apunta al GUID de la lista antigua, y al utilizarlos en la nueva colección no funcionarán porque no la encuentran.

    http://geeks.ms/blogs/mcortes/ http://mariocortesflores.blogspot.com/
    • Marcado como respuesta Jandrus I viernes, 20 de marzo de 2009 13:43
    jueves, 19 de marzo de 2009 18:57
  • Hola,
     gracias por la respuesta, pero no lo he entendido muy bien. He leido el ejemplo que me indicas, y me pregunto si es necesario desarrollar una feature para poder simplemente hacer un listado de las paginas de una lista, y por otro lado, si cambiamos todos los ListId por Listname, y borramos el GUID...como es capaz de acceder a la lista en concreto?

    viernes, 20 de marzo de 2009 9:51
  • En realidad son dos cuestiones:

    Por un lado, te comentaba que no puedes especificar el GUID de la instancia de lista debido que es una carencia de Sharepoint.

    Por otro lado, te comentaba la posibilidad de modificar los WebPart de contenido para que en lugar de utilizar el ListId utilicen el ListName, que ese si que lo conserva en las importaciones.
    En el ejemplo que indicaba lo que está haciendo modificando el ParameterBinding es decirle a Sharepoint que en lugar de buscar la lista por GUID, busque por ListName.
    El ejemplo es un poco complejo porque está destinado a hacer otra cosa, pero puedes hacer la modificación directamente desde Sahrepoint Designer sin tener que hacer una feature.
    Intenta probarlo desde una página de pruebas, agrega un webpart desde SharepointDesigner y modifica los ParameterBinding como indica el ejemplo.


    http://geeks.ms/blogs/mcortes/ http://mariocortesflores.blogspot.com/
    viernes, 20 de marzo de 2009 10:07
  •  Hola,

    He probado lo que me dices y me aparece este error:

    No se puede mostrar este elemento Web. Para obtener información sobre cómo solucionar el problema, abra esta página Web en un editor HTML compatible con Windows SharePoint Services, como Microsoft Office SharePoint Designer. Si el problema persiste, póngase en contacto con el administrador del servidor Web.

    el codigo fuente es:

    1 <WebPartPages:DataFormWebPart runat="server" IsIncluded="True" FrameType="None" NoDefaultStyle="TRUE" ViewFlag="0" Title="Páginas" __markuptype="vsattributemarkup" __WebPartId="{B43C7E06-2130-425E-AE44-EB9519666AB6}" id="g_10dc480a_8fab_463e_9882_2fe830382ea7">  
    2     <DataSources><SharePoint:SPDataSource runat="server" DataSourceMode="List" UseInternalName="true" selectcommand="&lt;View&gt;&lt;/View&gt;" id="dataformwebpart2">  
    3  
    4  
    5     <SelectParameters><WebPartPages:DataFormParameter Name="ListName" ParameterKey="ListName" PropertyName="ParameterValues" DefaultValue=""/></SelectParameters> 
    6     <DeleteParameters><WebPartPages:DataFormParameter Name="ListName" ParameterKey="ListName" PropertyName="ParameterValues" DefaultValue=""/></DeleteParameters> 
    7     <UpdateParameters><WebPartPages:DataFormParameter Name="ListName" ParameterKey="ListName" PropertyName="ParameterValues" DefaultValue=""/></UpdateParameters> 
    8     <InsertParameters><WebPartPages:DataFormParameter Name="ListName" ParameterKey="ListName" PropertyName="ParameterValues" DefaultValue=""/></InsertParameters> 
    9  
    10     </SharePoint:SPDataSource></DataSources>  
    11       
    12     <datafields>@FileLeafRef,Nombre (para uso en formularios);@Title,Título;@Comments,Descripción;@PublishingStartDate,Fecha de inicio programada;@PublishingExpirationDate,Fecha de finalización programada;@PublishingContact,Contacto;@PublishingContactEmail,Dirección de correo electrónico del contacto;@PublishingContactName,Nombre del contacto;@PublishingContactPicture,Imagen del contacto;@PublishingPageLayout,Diseño de página;@PublishingRollupImage,Imagen de informe;@Audience,Audiencias de destino;@ContentType,Tipo de contenido;@PublishingPageImage,Imagen de la página;@PublishingPageContent,Contenido de la página;@SummaryLinks,Vínculos de resumen;@ArticleByLine,Línea de autor;@ArticleStartDate,Fecha del artículo;@PublishingImageCaption,Leyenda de imagen;@SummaryLinks2,Vínculos de resumen 2;@Aprobaci,Aprobación de paginas;@ID,ID;@Created,Creado;@Author,Creado por;@Modified,Modificado;@Editor,Modificado por;@_CopySource,Copiar origen;@CheckoutUser,Desprotegido para;@_CheckinComment,Comentario de protección;@CheckedOutTitle,Desprotegido para;@CheckedOutUserId,Id. del usuario que tiene desprotegido el elemento;@FileDirRef,Ruta;@FSObjType,Tipo de elemento;@HTML_x0020_File_x0020_Type,Tipo de archivo HTML;@File_x0020_Type,Tipo de archivo;@IsCheckedoutToLocal,Está desprotegido en local;@_SourceUrl,Dirección URL de origen;@_HasCopyDestinations,Tiene destinos de copia;@ContentTypeId,Id. de tipos de contenido;@_ModerationStatus,Estado de aprobación;@_UIVersion,Versión de IU;@Created_x0020_Date,Creado;@FileRef,Dirección URL;@File_x0020_Size,Tamaño de archivo;@_UIVersionString,Versión;@ParentVersionString,Versión del origen (documento convertido);@ParentLeafName,Nombre del origen (documento convertido);@TemplateUrl,Vinculo de la plantilla;</datafields> 
    13     <XSL><xsl:stylesheet xmlns:x="http://www.w3.org/2001/XMLSchema" xmlns:d="http://schemas.microsoft.com/sharepoint/dsp" version="1.0" exclude-result-prefixes="xsl msxsl ddwrt" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" xmlns:asp="http://schemas.microsoft.com/ASPNET/20" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:SharePoint="Microsoft.SharePoint.WebControls" xmlns:ddwrt2="urn:frontpage:internal">  
    14     <xsl:output method="html" indent="no"/>  
    15     <xsl:decimal-format NaN=""/>  
    16         <xsl:param name="dvt_apos">'</xsl:param> 
    17         <xsl:variable name="dvt_1_automode">0</xsl:variable> 
    18         <xsl:template match="/">  
    19             <xsl:call-template name="dvt_1"/>  
    20     </xsl:template> 
    21         <xsl:template name="dvt_1">  
    22             <xsl:variable name="dvt_StyleName">Table</xsl:variable> 
    23             <xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row"/>  
    24         <table border="0" width="100%" cellpadding="2" cellspacing="0">  
    25             <tr valign="top">  
    26                 <xsl:if test="$dvt_1_automode = '1'" ddwrt:cf_ignore="1">  
    27                     <th class="ms-vh" width="1%" nowrap="nowrap"></th> 
    28                 </xsl:if> 
    29                 <th class="ms-vh" nowrap="nowrap">Título</th> 
    30             </tr> 
    31             <xsl:call-template name="dvt_1.body">  
    32                 <xsl:with-param name="Rows" select="$Rows"/>  
    33             </xsl:call-template> 
    34         </table> 
    35     </xsl:template> 
    36         <xsl:template name="dvt_1.body">  
    37             <xsl:param name="Rows"/>  
    38             <xsl:for-each select="$Rows">  
    39                 <xsl:call-template name="dvt_1.rowview"/>  
    40         </xsl:for-each> 
    41     </xsl:template> 
    42         <xsl:template name="dvt_1.rowview">  
    43         <tr> 
    44             <xsl:if test="position() mod 2 = 1">  
    45                 <xsl:attribute name="class">ms-alternating</xsl:attribute> 
    46             </xsl:if> 
    47             <xsl:if test="$dvt_1_automode = '1'" ddwrt:cf_ignore="1">  
    48                 <td class="ms-vb" width="1%" nowrap="nowrap">  
    49                     <span ddwrt:amkeyfield="ID" ddwrt:amkeyvalue="ddwrt:EscapeDelims(string(@ID))" ddwrt:ammode="view"></span> 
    50                 </td> 
    51             </xsl:if> 
    52             <td class="ms-vb">  
    53                 <xsl:value-of select="@Title"/>  
    54             </td> 
    55         </tr> 
    56     </xsl:template> 
    57 </xsl:stylesheet></XSL>  
    58 <parameterbindings> 
    59         <ParameterBinding Name="ListName" Location="None" DefaultValue=""/>--><ParameterBinding Name="dvt_apos" Location="Postback;Connection"/><ParameterBinding Name="UserID" Location="CAMLVariable" DefaultValue="CurrentUserName"/><ParameterBinding Name="Today" Location="CAMLVariable" DefaultValue="CurrentDate"/></parameterbindings></WebPartPages:DataFormWebPart> 
    60  

    Que esta fallando?

    Gracias

    viernes, 20 de marzo de 2009 10:57
  • Bueno, un apunte, sustitui en la parte de arriba (lineas 5-8) por estas otras

    1     <SelectParameters><WebPartPages:DataFormParameter Name="ListName" ParameterKey="ListName" PropertyName="ParameterValues" DefaultValue="Páginas"/></SelectParameters> 
    2     <DeleteParameters><WebPartPages:DataFormParameter Name="ListName" ParameterKey="ListName" PropertyName="ParameterValues" DefaultValue="Páginas"/></DeleteParameters> 
    3     <UpdateParameters><WebPartPages:DataFormParameter Name="ListName" ParameterKey="ListName" PropertyName="ParameterValues" DefaultValue="Páginas"/></UpdateParameters> 
    4     <InsertParameters><WebPartPages:DataFormParameter Name="ListName" ParameterKey="ListName" PropertyName="ParameterValues" DefaultValue="Páginas"/></InsertParameters> 
    5  



    y me aparecen los items en el sitio inicial, pero al hacer export/import, sigue apareciendome el mensaje de error...

    viernes, 20 de marzo de 2009 11:14
  • Creo que te falta además en los parameterbinding indicar el nombre de la lista en el atributo DefaultValue:

    <ParameterBinding Name="ListName" Location="None" DefaultValue=""/>


    Además tienes un cierre de comentario a cotninuación del parameterbinding, <ParameterBinding Name="ListName" Location="None" DefaultValue=""/>-->

    Yo he hecho una prueba y he añadido el dataform webpart > he reemplazado desde la opción de reemplazar del designer todas las referencias de "ListID" por "ListName" > he reemplazado desde la opción de reemplazar del designer todas las referencias del GUID de mi lista por el nombre de mi lista. 

    http://geeks.ms/blogs/mcortes/ http://mariocortesflores.blogspot.com/
    viernes, 20 de marzo de 2009 11:32
  • Algo raro pasa, pero no se hasta que punto puede llegar a ser lo normal...si coloco todos los "<SelectParameters>...", con el DefaultValue="Páginas" , y <ParameterBinding Name="ListName" Location="None" DefaultValue=""/> sin el valor "Páginas", en el desgner me aparece el error, pero en el Internet explorer lo veo bien, pero sin embargo, si consigo que me visualize los datos en el designer, en el IE, me aparece ese mismo error...

    viernes, 20 de marzo de 2009 12:28
  • Prueba a borrar el dataformwebpart que has añadido y añádelo de nuevo,reemplaza el listname y el guid desde la opción de reemplazar del Sahrepoint Designer, haciendo eso te debería funcionar sin tocar nada más.


    http://geeks.ms/blogs/mcortes/ http://mariocortesflores.blogspot.com/
    viernes, 20 de marzo de 2009 12:31
  • Bueno, no he conseguido que se visualize en los dos sitios, pero con que se visualize correctamente en el explorador web, me doy mas que por satisfecho...Muchas gracias por tu ayuda

    Saludos
    viernes, 20 de marzo de 2009 13:44