2010-11-29 25 views
1

J'essaie d'obtenir la valeur de texte d'une liste déroulante de l'API et je me débats sérieusement.types de données umbraco et la valeur du texte du code derrière

C'est ce que j'ai en ce moment:

Document doc = new Document(Node.GetCurrent().Id); 

doc.GetProperty("fieldPropertyName").Value; 

Cela renvoie une représentation de chaîne de l'identifiant pour la prevalue.

Ce que je veux, c'est le texte pour cette valeur pré.

Merci d'avance pour l'aide.

+0

Je l'ai trouvé un moyen de le faire en boucle sur les pré-valeurs, mais il se sent un peu klunky. Est-ce que personne n'a un meilleur moyen? – jimplode

Répondre

0

Veuillez excuser ceci étant en VB.

C'est la langue que je trouvais à développer en. (Comment je voudrais pouvoir utiliser C#)

Imports System.Runtime.CompilerServices 
Imports umbraco.cms.businesslogic.web 
Imports umbraco.cms.businesslogic.datatype 

Module UmbracoExtensionHelper 


    <Extension()> 
    Public Function GetCustomPropertyValueFromPreValues(ByVal doc As Document, ByVal propertyName As String) 
     Dim returnValue As String = "" 
     Dim objProperty As umbraco.cms.businesslogic.property.Property = doc.getProperty(propertyName) 

     If objProperty IsNot Nothing Then 
      Dim objPreValues = PreValues.GetPreValues(objProperty.PropertyType.DataTypeDefinition.Id) 
      If objPreValues IsNot Nothing Then 

       ''run through the ids of the datatypes and the value of the property 
       For Each entry As DictionaryEntry In objPreValues 
        Dim currentPreValue As PreValue = CType(entry.Value, PreValue) 
        If currentPreValue.Id.ToString().ToLower() = objProperty.Value.ToString().ToLower() Then 
         returnValue = currentPreValue.Value.ToLower() 
         Exit For 
        End If 
       Next 

      End If 
     End If 

     Return returnValue 
    End Function 




End Module 
+1

Je sens ton homme de douleur –

4

Utilisez la fonction de bibliothèque ...

var stringValue = umbraco.library.GetPreValueAsString(Convert.ToInt32(doc.GetProperty("fieldName").Value)); 
0

utilisez le code suivant

page ASPX

<asp:DropDownList ID="ddlLocation" ClientIDMode="Static" runat="server" AutoPostBack="true" CssClass="selectbox" OnSelectedIndexChanged="ddlLocation_SelectedIndexChanged" /> 

code Derrière

var regionItems = regionFolder.Children; 
      if (regionItems.Count > 0) { 
       foreach (Node region in regionItems) { 
        if (region.GetProperty(FieldName.REGIONNAME) != null && !string.IsNullOrEmpty(region.GetProperty(FieldName.REGIONNAME).Value)) { 
         ddlLocation.Items.Add(new ListItem(region.GetProperty(FieldName.REGIONNAME).Value, region.Id.ToString())); 
        } 
       } 
      } 
      //ddlLocation.Items.Insert(0, "Choose"); 
      ddlLocation.Items.Insert(0, new ListItem("Choose", "0")); 

ici RegionName = notre nom de domaine,