Pregunta

Estoy construyendo una parte web que se agregará a la parte inferior de cada vista de la biblioteca y mostraría los tipos de contenido de la carpeta, lo que facilita la creación de una nueva carpeta (en lugar de tener que ir a documentos - Nuevo documento y luego seleccione deun desplegable).

Mi primer intento usado

    foreach(SPContentType type in list.ContentTypes)

Esto funciona, pero me da los tipos de contenido en algún tipo de orden predeterminado que no tiene nada que ver con el pedido que establece en el nuevo botón de documento.

Mi siguiente intento que usé

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

Esto también funciona, pero me da exactamente el mismo orden que el primer intento, aunque tengo un nuevo botón de órdenes de botón para cada tipo de carpeta en la biblioteca.

Entonces, ¿cómo obtengo el orden en que aparecen los artículos en el nuevo botón?

¿Fue útil?

Solución 2

Me di cuenta de que estaba obteniendo el objeto de la carpeta incorrectamente.Puede haber una forma más elegante de hacer esto, pero las siguientes obras:

            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)

Otros consejos

Para recuperar la lista de tipos de contenido que ordenaron de la misma manera que aparecen los artículos en el botón Nuevo:

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


SPFolder.ContentTypeorder propiedad.

de acuerdo con MSDN:

Esta propiedad devuelve una lista de SPCONTENTTYPE objetos.La secuencia de objetos en la lista determina el orden en que los tipos de contenido se enumeran en la interfaz de usuario, como en el nuevo menú de una lista de SharePoint o en la página de configuración de la lista.

Licenciado bajo: CC-BY-SA con atribución
scroll top