2011-09-13 807 views
5

intento agregar campo de búsqueda en el tipo de contenido Campo tiene esta definición:.Sharepoint y WebID ="

<Field ID="{c80e8e3c-7124-4772-a39d-5b69f131d542}" 
     Name="Site" 
     Group="Tieto Intranet Columns" 
     Type="Lookup" 
     DisplayName="Site" 
     StaticName="Site" 
     List="Lists/FavoriteSites" 
     ShowField="Title" 
     PrependId="TRUE" 
     WebId="~sitecollection" 
    > 

lista FavoriteSites, lo que quiero de referencia en este campo de búsqueda, existe en el ámbito colección de sitios La implementación funciona bien, pero cuando creo una lista basada en el tipo de contenido con esta búsqueda, parece que el campo de búsqueda no está conectado a la lista de Favoritos. Agrego algunos datos a FavoriteSites y luego trato de agregar algo a la segunda lista con el campo de búsqueda. en FavoriteSites. Desafortunadamente desplegable de selección, lo que me debe mostrar los datos de FavoriteSites lista está vacía.

Cuando crear una nueva columna de búsqueda para FavoriteSites manualmente todo está bien.

¿Alguien tiene alguna idea de dónde puede haber problemas en esta definición de búsqueda?

ACTUALIZACIÓN:

tan rico me recomendó, me puse nivel sobre un registro detallado de encontrar este mensaje:

El WebID = ~ sitecollection y/list = Muestra los atributos FavoriteSites especificados por el campo {c80e8e3c-7124- 4772-a39d-5b69f131d542} en la función {d86c7005-d31d-43ae-b86b-38f28b81072e} no se pudo encontrar. Set List = {39CEC23E-FB28-47B3-BC36-C21780AD1D94}.

No lo entiendo porque existe una lista de Favoritos. La lista Favoritos y también la segunda lista con el campo Sitio se despliegan con una característica en el ámbito de la colección de sitios.

No puedo especificar la lista en la búsqueda por GUID porque no sé el guid en tiempo de implementación.

+1

Busque los registros de SP (se requieren registros de nivel detallados) en el momento en que se activó la característica para el siguiente mensaje: "Los atributos WebId = ~ sitecollection y List = Lists/FavoriteSites especificados", luego actualice su pregunta con la segunda mitad de el mensaje. –

+0

Gracias por tu comentario Rich, encontré este mensaje y actualicé mi publicación. ¿Ahora tienes alguna idea de dónde está el problema? – Michal

Respuesta

4

Lo que significa que el mensaje de registro es que/FavoriteSites no existen listas en el sitio raíz de la colección de sitios o en el sitio donde se está activando la función (si este último es un subsitio).

Si Listas/FavoriteSites está siendo creado por una característica, a continuación, asegúrese de que se activa antes de que su función campos. Coloque el elemento ListInstance justo encima de su elemento Field si es necesario. Pero el mensaje es claro: la lista no existe en el momento en que su campo personalizado se aprovisiona en la colección de sitios. Y es por eso que no está funcionando.

Para ser claros, la lista tiene que existir en el momento en que se activa la función, no sólo cuando se crea una instancia de la lista que va a utilizar ese campo.

P.S. Encontré esto al marcar el "documentation" para el método Microsoft.SharePoint.SPFieldElement.PerformFixUpIfLookUpField.

+0

Gracias Rich, fue causado por el orden de activación de la función. Cuando pongo la activación de la función con listas antes de la función con campos todo funciona bien. – Michal

1

Intente cambiar el campo de lista por el ID de la lista, p. List="{4641f5f2-b358-4805-9d7d-e910d2243fb5}"

También recomendaría el uso de SharePointManager para mirar la definición del campo de su campo creado manualmente y para encontrar fácilmente los GUID en flor de listas, etc.

+0

Gracias por su respuesta Nat, SharePointManager es realmente una aplicación muy útil, no lo sabía antes. No puedo especificar esta lista por ID porque no conozco la ID en el momento de la implementación. Puedo agregar esta columna por Feature event reciever pero no es la forma que quiero usar. Creo que el camino con la definición xml y la URL de la lista debería estar bien en Sharepoint 2010. – Michal

1

Tuve el mismo problema. Al final, mi problema fue que no se puede hacer referencia declarativa a una lista que está en el servidor raíz. El token ~ sitecollection en la propiedad WebId no funciona porque escribirá el Guid entre llaves, mientras que SharePoint lo espera sin llaves (la explicación se puede encontrar en http://martensboarterstun.wordpress.com/2013/06/15/how-to-create-a-list-definition-with-a-lookup-field-declaratively/). Terminé colocando la ID de Rootweb en mi definición de lista.