Pergunta

Eu tenho o conjunto de sites do SharePoint 'http://microsoft.com/' com poucos sites filhos, por exemplo:http://microsoft.com/news/

Quero criar um campo de pesquisa na lista 'Páginas'.Em cada campo de pesquisa da web filho deve apontar para a lista de 'Páginas' da web atual.

Atualmente todos os meus campos criados estão relacionados à biblioteca 'Páginas' no site raiz.

Eu tenho a definição do campo:

<Field Name="LookupToPages" 
   ID="{3B5B07A0-68DB-4BF6-AAAE-87B77CE430C6}"
         Type="LookupMulti"
         DisplayName="Related News"
         Group="Intranet.ContentTypes"
         Mult="TRUE"
         Overwrite="TRUE"
         SourceID="http://schemas.microsoft.com/sharepoint/v3"
         List="Pages"
         ShowField="Title"/>

Este campo foi adicionado ao meu tipo de conteúdo usado na biblioteca Pages:

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <ContentType ID="0000"
                Name="News"
               Group="my froup"
               Description="Page layout for intranet news."
               Inherits="TRUE"
               Version="0">    
    <FieldRefs>
      <FieldRef ID="{3B5B07A0-68DB-4BF6-AAAE-87B77CE430C6}" Name="LookupToPages" />
    </FieldRefs>
  </ContentType>
</Elements>

Tentei adicionar definição de campo ao recurso com escopo 'Site' e 'Web'.Ambos têm os mesmos resultados.Eu só tenho uma coluna de pesquisa que aponta para o site raiz.

Como tornar esse campo relacionado à web?

Foi útil?

Solução

Eugênio,

Se esta for uma pesquisa na própria lista (ou seja,você deseja selecionar elementos da mesma lista, como artigos de notícias relacionados), você pode definir a propriedade da lista como "self".

<Field Name="LookupToPages" ID="{3B5B07A0-68DB-4BF6-AAAE-87B77CE430C6}" Type="LookupMulti" DisplayName="Related News" Group="Intranet.ContentTypes" Mult="TRUE" Overwrite="TRUE" SourceID="http://schemas.microsoft.com/sharepoint/v3" List="Self" ShowField="Title"/>

Veja aqui para mais informações:

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

Outras dicas

Eugênio,

Recomendo que você utilize um receptor de eventos se estiver provisionando a lista ou o tipo de conteúdo por meio de um recurso.

Resumindo, o que você precisa fazer é criar a coluna de pesquisa na lista, obter um link de campo para a nova coluna e, em seguida, adicionar o link de campo ao tipo de conteúdo anexado à lista.

Algo assim deve funcionar, desde que você já tenha os objetos myList, myListCT e pageList:

string fieldName = myList.Fields.AddLookup("Page Column Display Name", pageList.ID, true);
SPField field = myList.Fields.GetFieldByInternalName(fieldName);
SPFieldLink fieldLink = new SPFieldLink(invoiceField);
myListCT.FieldLinks.Add(invoiceFieldLink);
myListCT.Update();

.b

No SP2013, você pode criar uma coluna de pesquisa.No campo "Obter informações de", escolha Páginas do site.

Eu recomendo que você use JSOM porque ele também pode ser usado facilmente no O 365.Você pode usar o método:fieldCollection.addFieldAsXml(fieldSchema, true, SP.AddFieldOptions.addToDefaultContentType);

Veja para mais informações:http://josharepoint.com/2015/12/02/create-a-new-lookup-field-using-jsom-in-sharepoint-2013-office-365/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top