Pergunta

Estou construindo uma web part que seria adicionada à parte inferior de cada visualização da biblioteca e exibiria os tipos de conteúdo da pasta, facilitando a criação de uma nova pasta (em vez de ter que ir para documentos - novo documento e selecionar em um menu suspenso). abaixo).

Minha primeira tentativa usou

    foreach(SPContentType type in list.ContentTypes)

Isso funciona, mas fornece os tipos de conteúdo em algum tipo de ordem padrão que não tem nada a ver com a ordem que defini no botão Novo documento.

Minha próxima tentativa eu ​​usei

    SPFolder folder = web.GetFolder(Request.RawUrl);
    foreach(SPContentType type in folder.ContentTypeOrder)

Isso também funciona, mas me dá exatamente a mesma ordem da primeira tentativa, embora eu tenha novas ordens de botões exclusivas definidas para cada tipo de pasta na biblioteca.

Então, como obtenho a ordem em que os itens aparecem no novo botão?

Foi útil?

Solução 2

Eu descobri que estava obtendo o objeto da pasta incorretamente.Pode haver uma maneira mais elegante de fazer isso, mas o seguinte funciona:

            SPFolder folder;
            string rawUrl = Request.RawUrl;
            string rootFolder;
            if (rawUrl.Contains("RootFolder"))
            {
                int start = rawUrl.IndexOf("RootFolder");
                int end = rawUrl.IndexOf("&", start);
                int length = end - start;
                rootFolder = rawUrl.Substring(start, length);
                string url = rootFolder.Replace("RootFolder=", "");
                folder = web.GetFolder(url);
            }
            else
            {
                folder = list.RootFolder;
            }


            foreach (SPContentType type in folder.ContentTypeOrder)

Outras dicas

Para recuperar a lista de tipos de conteúdo ordenados da mesma forma que os itens aparecem no novo botão:

            SPFolder folder = list.RootFolder; 
            if (folder.ParentListId != Guid.Empty)
            {
                var contentTypeOrder = folder.ContentTypeOrder;
                foreach (var contentType in contentTypeOrder)
                {
                    //...
                }
            }  

SPFolder.ContentTypeOrder propriedade.

De acordo com o MSDN:

Esta propriedade retorna uma lista de SPContentType objetos.A sequência de objetos na lista determina a ordem em que os tipos de conteúdo são listados na interface do usuário, como no menu Novo de uma lista do Sharepoint ou na página Configurações da lista.

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