Pergunta

Eu tenho uma propriedade no Umbraco que usa um tipo de dados suspenso com um conjunto de prevalentes que você pode selecionar.

Como faço para recuperar uma lista de todas as possíveis prevalentes que estão nesta lista suspensa?

Foi útil?

Solução

Há um método auxiliar na libra de Umbraco. Que faz isso.

De XSLT:

<xsl:variable name="prevalues" select="umbraco.library:GetPreValues(1234)" />

Do código:

using umbraco;
XPathNodeIterator prevalues = library.GetPrevalues(1234);

Substitua 1234 pelo ID do seu tipo de dados (você pode vê -lo na parte inferior do seu navegador ao passar o mouse sobre o tipo de dados na seção Desenvolvedores)

Cumprimentos
Jesper Hauge

Outras dicas

Aqui está o código que eu uso em um dos meus tipos de dados Umbraco para obter uma lista suspensa que contenha todos os possíveis prevalentes:

var prevalues = PreValues.GetPreValues(dataTypeDefinitionId);
DropDownList ddl = new DropDownList();

if (prevalues.Count > 0)
{
    for (int i = 0; i < prevalues.Count; i++)
    {
        var prevalue = (PreValue)prevalues[i];
        if (!String.IsNullOrEmpty(prevalue.Value))
        {
            ddl.Items.Add(new ListItem(prevalue.Value, prevalue.DataTypeId.ToString()));
        }
    }
}

Substitua DatAtyPeDefinitionId pelo ID do seu tipo de dados.

Sei que essa é uma pergunta antiga, mas criei esse método com base nas informações fornecidas nesta resposta e acho que vale a pena documentar:

public static class UmbracoExtensions
{
    public static IEnumerable<string> GetDropDownDataTypeValues(int dataTypeId)
    {
        var dataTypeValues = umbraco.library.GetPreValues(dataTypeId);
        var dataTypeValuesEnumerator = dataTypeValues.GetEnumerator();
        while (dataTypeValues.MoveNext())
        {
            dynamic dataTypeItem = dataTypeValues.Current;
            yield return dataTypeItem.Value;
        }
    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top