Domanda

Ho un immobile in umbraco che utilizza un menu a discesa tipo di dati con una serie di prevalues che è possibile selezionare da.

Come faccio a recuperare un elenco di tutte le possibili prevalues che sono in questo elenco?

È stato utile?

Soluzione

C'è un metodo di supporto in umbraco.libreria che fa.

Da xslt:

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

Da codice:

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

Sostituire 1234 con l'id del tuo tipo di dati (Si può vedere nella parte inferiore del vostro browser quando si passa il mouse sopra il tipo di dati nella sezione dei collaboratori)

Saluti
Jesper Hauge

Altri suggerimenti

Ecco il codice che uso io in uno dei miei Umbraco tipi di dati per ottenere una DropDownList con tutte le possibili prevalues:

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()));
        }
    }
}

Sostituire dataTypeDefinitionId con l'id del tuo tipo.

So che questa è una vecchia questione, ma ho creato questo metodo basato sulle informazioni fornite in questa risposta, e penso che vale la pena di documentare:

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;
        }
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top