2010-11-29 48 views
1

我想從API中獲取下拉列表的文本值,我正在嚴重掙扎。umbraco數據類型和來自代碼背後的文本值

這是我的時刻:

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

doc.GetProperty("fieldPropertyName").Value; 

這將返回ID爲預置值的字符串表示。

我想要的是該預值的文本。

在此先感謝您的幫助。

+0

我已經找到一種方法通過遍歷預值要做到這一點,但感覺有點klunky。沒有人有更好的方法嗎? – jimplode 2010-11-29 16:11:38

回答

0

請原諒這是在VB中。

這是我發生在正在發展的語言。(我多麼希望我可以使用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

我覺得你痛苦的人 – 2014-02-06 12:20:31

4

使用的庫函數...

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

使用下面的代碼

aspx page

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

代碼隱藏

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")); 

這裏REGIONNAME =我們的字段名,

相關問題