jueves, 29 de octubre de 2015

Reordenar colunas de um ContentType programaticamente.

Em umas das tarefas solicitadas pelo cliente, tinha a de re-organizar os item no formulario de uma lista, aonde já estava em produção.

Se poderia fazer uso do arquivo schema.xml do projeto para alterar a ordem dos campos, mas como foi falado, a lista já estava em produção, consequentemente não teria efeito alterar dito arquivo.

Então como solução se fez um método que sera chamado no momento de ativar a feature. Este método utiliza o metodo "Reorder" do content type, ele ordea as colunas baseado no seu parâmentro:
 
public void Reorder(
 string[] internalNames
)
 
 
Para obter os internal names, umas das formas e utilizar SharePoint Manager, observe imagem abaixo:
 
 
 
O método utilizado num projeto ficou assim: (se ordenou as colunas do content type 'Evento'*)

public static void ReorderContentTypeListNotificacao(SPSite site)
{
    var web = site.RootWeb;
    bool estadoAtual = web.AllowUnsafeUpdates;
    web.AllowUnsafeUpdates = true;

    SPContentType ct = web.ContentTypes["Evento"];

    ct.FieldLinks.Reorder(new string[] { "Title", "Location", "EventDate", "EndDate", "fAllDayEvent", "Description", "EventType", "Category", "PGCSCPessoaGrupo" });

    ct.Update(true);

    web.AllowUnsafeUpdates = estadoAtual;
}


*Content type possui as seguintes colunas: title, Location, EventDate, EndDate, fAllDayEvent, Description, EventType,, Category, etc.


Bibliografia
https://msdn.microsoft.com/EN-US/library/office/microsoft.sharepoint.spfieldlinkcollection.reorder.aspx

Atte.
 

No hay comentarios:

Publicar un comentario