---
title: "DotNetNuke DroDown.Bind()"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/178739-dotnetnuke-drodown-bind"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "MickeA.com"
published: "2009-05-26T08:17:44.000Z"
updated: "2009-08-06T12:24:47.000Z"
replies: 32
views: 1875
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/178739-dotnetnuke-drodown-bind"
---

# DotNetNuke DroDown.Bind()

_Sida 1 av 2._

## #1 — MickeA.com, 2009-05-26T08:17Z

Hej,

Försöker fylla en dropdownlista med de språk som finns tillgängliga i en DNN Portal.

Såhär har jag gjort:

```
<%@ Import namespace="DotNetNuke"%>
<%@ Import namespace="DotNetNuke.Common"%>
<%@ Import namespace="DotNetNuke.Common.Utilities"%>
<%@ Import namespace="DotNetNuke.UI.Utilities"%>

...

<script runat="server">
void Page_Load(System.Object sender, System.EventArgs e)
{
   [b][red]ddlFeedLanguage.DataSource = DotNetNuke.Services.Localization.Localization.GetEnabledLocales.Keys;[/red][/b]
   ddlFeedLanguage.DataBind();
}
</script>

...

<asp:DropDownList ID="ddlFeedLanguage" runat="server" Visible="False" AutoPostBack="true"></asp:DropDownList>
```

Men jag får felet:

```
'DotNetNuke.Services.Localization.Localization.GetEnabledLocales()'+is+a+'method'%2c+which+is+not+valid+in+the+given+context
```

Vad har jag gjort för fel? Har ett fungerande exempel i VB.NET som ser ut såhär:

```
With ddlFeedLanguage
   .DataSource = DotNetNuke.Services.Localization.Localization.GetEnabledLocales.Keys
   .DataBind()
   .Items.Insert(0, New ListItem("-All-"))
End With

...

<asp:DropDownList ID="ddlFeedLanguage" runat="server" Visible="False" AutoPostBack="true"></asp:DropDownList>
```

Jag ska försöka åstadkomma samma sak i C# nu, men förstår inte vad jag gör för fel.

Tack,

Permalänk: https://www.webforum.nu/p/178739

## #2 — NETwork, 2009-05-26T09:23Z

Är GetEnabledLocales en metod? Vad returnerar den? Prova detta:

```
ddlFeedLanguage.DataSource = DotNetNuke.Services.Localization.Localization.GetEnabledLocales().Keys

eller

[Type] Locales =  DotNetNuke.Services.Localization.Localization.GetEnabledLocales();
ddlFeedLanguage.DataSource = Locales.Keys
```

Permalänk: https://www.webforum.nu/p/2185813

## #3 — MickeA.com, 2009-05-26T09:41Z

> **[NETwork skrev:](https://www.webforum.nu/p/1468965)**
>
> Är GetEnabledLocales en metod? Vad returnerar den?

Lite osäker, men här finns all info om alla metoder/egenskaper:
<http://classbrowser.subzero-solutions.net/Default.aspx?tabid=130&tabindex=130&assembly=DotNetNuke,%20Version=4.9.4.17,%20Culture=neutral,%20PublicKeyToken=null&namespace=DotNetNuke.Services.Localization&class=LocaleCollection>

Permalänk: https://www.webforum.nu/p/2185815

## #4 — johaseo, 2009-05-26T09:49Z

Den här koden fungerar utmärkt ... men den är i VB.net förstås ;)

```
Imports System.Web.UI
Imports System.Collections.Generic
Imports System.Reflection

Imports DotNetNuke
Imports DotNetNuke.Services.Exceptions
Imports DotNetNuke.Services.Localization

Namespace ITansvar.Modules.TestModule

    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' The ViewTestModule class displays the content
    ''' </summary>
    ''' <remarks>
    ''' </remarks>
    ''' <history>
    ''' </history>
    ''' -----------------------------------------------------------------------------
    Partial Class ViewTestModule
        Inherits Entities.Modules.PortalModuleBase
        Implements Entities.Modules.IActionable

#Region "Event Handlers"

        ''' -----------------------------------------------------------------------------
        ''' <summary>
        ''' Page_Load runs when the control is loaded
        ''' </summary>
        ''' <remarks>
        ''' </remarks>
        ''' <history>
        ''' </history>
        ''' -----------------------------------------------------------------------------
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Try
                Dim objTestModules As New TestModuleController
                Dim colTestModules As List(Of TestModuleInfo)

                ' get the content from the TestModule table
                colTestModules = objTestModules.GetTestModules(ModuleId)

                If colTestModules.Count = 0 Then
                    ' add the content to the TestModule table
                    Dim objTestModule As TestModuleInfo = New TestModuleInfo
                    objTestModule.ModuleId = ModuleId
                    objTestModule.Content = Localization.GetString("DefaultContent", LocalResourceFile)
                    objTestModule.CreatedByUser = Me.UserId
                    objTestModules.AddTestModule(objTestModule)
                    ' get the content from the TestModule table
                    colTestModules = objTestModules.GetTestModules(ModuleId)
                End If

                ' bind the content to the repeater
                lstContent.DataSource = colTestModules
                lstContent.DataBind()

                ddlFeedLanguage.DataSource = DotNetNuke.Services.Localization.Localization.GetEnabledLocales.Keys
                ddlFeedLanguage.DataBind()

                '                ddlFeedLanguage.DataSource = DotNetNuke.Services.Localization.Localization.GetEnabledLocales.Keys;
                'ddlFeedLanguage.DataBind();

            Catch exc As Exception        'Module failed to load
                ProcessModuleLoadException(Me, exc)
            End Try
        End Sub

        Protected Sub lstContent_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles lstContent.ItemDataBound
            Dim strContent As String = ""

            ' add content to template
            If CType(Settings("template"), String) <> "" Then
                strContent = CType(Settings("template"), String)
                Dim objProperties As ArrayList = Common.Utilities.CBO.GetPropertyInfo(GetType(TestModuleInfo))
                Dim intProperty As Integer
                Dim objPropertyInfo As PropertyInfo
                For intProperty = 0 To objProperties.Count - 1
                    objPropertyInfo = CType(objProperties(intProperty), PropertyInfo)
                    strContent = strContent.Replace("[" & objPropertyInfo.Name.ToUpper & "]", DataBinder.Eval(e.Item.DataItem, objPropertyInfo.Name).ToString())
                Next intProperty
            Else
                strContent = DataBinder.Eval(e.Item.DataItem, "Content")
            End If

            ' assign the content
            Dim lblContent As Label = CType(e.Item.FindControl("lblContent"), Label)
            lblContent.Text = strContent
        End Sub

#End Region

#Region "Optional Interfaces"

        ''' -----------------------------------------------------------------------------
        ''' <summary>
        ''' Registers the module actions required for interfacing with the portal framework
        ''' </summary>
        ''' <value></value>
        ''' <returns></returns>
        ''' <remarks></remarks>
        ''' <history>
        ''' </history>
        ''' -----------------------------------------------------------------------------
        Public ReadOnly Property ModuleActions() As Entities.Modules.Actions.ModuleActionCollection Implements Entities.Modules.IActionable.ModuleActions
            Get
                Dim Actions As New Entities.Modules.Actions.ModuleActionCollection
                Actions.Add(GetNextActionID, Localization.GetString(Entities.Modules.Actions.ModuleActionType.AddContent, LocalResourceFile), Entities.Modules.Actions.ModuleActionType.AddContent, "", "", EditUrl(), False, Security.SecurityAccessLevel.Edit, True, False)
                Return Actions
            End Get
        End Property

#End Region

    End Class

End Namespace
```

Permalänk: https://www.webforum.nu/p/2185819

## #5 — MickeA.com, 2009-05-26T10:14Z

Det här funkar fint:

```
<script runat="server">
void Page_Load(System.Object sender, System.EventArgs e)
{
   ddlFeedLanguage.DataSource = DotNetNuke.Services.Localization.Localization.GetEnabledLocales().AllKeys;
   ddlFeedLanguage.DataBind();
}
</script>

...

<telerik:RadComboBox ID="ddlFeedLanguage" runat="server" Width="180px" />
```

Men nu skrivs ju alla locales ut i listan (en-US, sv.SE ..).
Om jag istället vill skriva ut deras namn, dvs. English, Svenska osv. hur gör jag då? Det bör väl gå att lösa genom att loopia igenom *DotNetNuke.Services.Localization.Localization.GetEnabledLocales()* istället, men hur bör koden se ut?

Permalänk: https://www.webforum.nu/p/2185822

## #6 — johaseo, 2009-05-26T10:56Z

Konstigt .... efter att först kört detta exempel:

```
ddlFeedLanguage.DataSource = DotNetNuke.Services.Localization.Localization.GetEnabledLocales().AllKeys;
ddlFeedLanguage.DataBind();
```

så bytte jag tillbaks till det tidigare ej fungerande exemplet som nu fungerar!!!

```
ddlFeedLanguage.DataSource =DotNetNuke.Services.Localization.Localization.GetEnabledLocales().Keys ;
ddlFeedLanguage.DataBind();
```

Permalänk: https://www.webforum.nu/p/2185825

## #7 — MickeA.com, 2009-05-26T11:28Z

Båda dom där funkar för mig.
Men jag måste ha ut allt som en array eller så, så att jag får ut "Locale" och även "Nativ name".

Förslag?

Ett tips, använd gärna \[kod \]\[/ kod\] taggen när du postar kod, så går den att läsa!

Permalänk: https://www.webforum.nu/p/2185830

## #8 — johaseo, 2009-05-26T12:17Z

Jag skulle använda:

```
                System.Globalization.CultureInfo objCultureInfo 
                                              = new System.Globalization.CultureInfo("sv-SE");
```

där har du :

```
objCultureInfo.DisplayName="Svenska (Sverige)"
objCultureInfo.EnglishName="Swedish (Sweden)"
```

Permalänk: https://www.webforum.nu/p/2185832

## #9 — MickeA.com, 2009-05-26T13:12Z

Okej, så här ser det ut:

```
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>

<script runat="server">

void Page_Load(System.Object sender, System.EventArgs e)
{
   ddlFeedLanguage.DataSource = DotNetNuke.Services.Localization.Localization.GetEnabledLocales().AllKeys;
   ddlFeedLanguage.DataBind();
}
</script>

...

<telerik:RadComboBox ID="ddlFeedLanguage" runat="server" Width="180px">
   <Items>
     <telerik:RadComboBoxItem Text="RadComboBox" ImageUrl="Img/ComboboxPr.gif" runat="server"></telerik:RadComboBoxItem>
     <telerik:RadComboBoxItem Text="RadComboBox" ImageUrl="Img/ComboboxPr.gif" runat="server"></telerik:RadComboBoxItem>
     <telerik:RadComboBoxItem Text="RadComboBox" ImageUrl="Img/ComboboxPr.gif" runat="server"></telerik:RadComboBoxItem>
   </Items>
</telerik:RadComboBox>
```

Jag måste alltså loopa igenom *DotNetNuke.Services.Localization.Localization.GetEnabledLocales().Keys;* och sen ange en ny CultureInfo varje varv på loopen. Men hur skriver jag ut telerikkoden? Är det sånt här man använder Eval() till?

Jag är mer eller mindre grön på C# så skulle uppskatta lite hjälp på traven.

Tack!

Permalänk: https://www.webforum.nu/p/2185840

## #10 — johaseo, 2009-05-26T13:28Z

bara för att du är Djurgårdare och jag därmed tycker synd om er pga eran tabellplacering så skall jag skriva koden till dig ... ett ögonblick

Permalänk: https://www.webforum.nu/p/2185845

## #11 — MickeA.com, 2009-05-26T13:45Z

> **[johaseo skrev:](https://www.webforum.nu/p/1468999)**
>
> bara för att du är Djurgårdare och jag därmed tycker synd om er pga eran tabellplacering så skall jag skriva koden till dig ... ett ögonblick

Man tackar man tackar.. :) Har inte så bra koll på Svensk fotboll längre, får börja hålla på [Sliema Wanderers](http://en.wikipedia.org/wiki/Sliema_Wanderers_F.C.) istället!

Permalänk: https://www.webforum.nu/p/2185847

## #12 — johaseo, 2009-05-26T14:14Z

```
        Protected Sub ddlFeedLanguage_DataBound(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ddlFeedLanguage.DataBound
            Dim ddlFeedLanguage As DropDownList
            ddlFeedLanguage = CType(sender, DropDownList)
            Dim i As Integer
            For i = 0 To ddlFeedLanguage.Items.Count - 1
                Dim objListItem As New ListItem
                objListItem = ddlFeedLanguage.Items(i)
                Dim objCultureInfo As New System.Globalization.CultureInfo(objListItem.Text)
                objListItem.Text = objCultureInfo.DisplayName
            Next
            Dim kalle As Integer = 0
        End Sub
```

ursäkta men en kund ringde .... och det gick fortare för mig i VB.Net .... varför skriver du dotnetnuke i C# förresten ? dotnetnuke finns ju mestadels i VB.Net kod

Permalänk: https://www.webforum.nu/p/2185848

## #13 — MickeA.com, 2009-05-26T14:42Z

Tack ska du ha.. Får försöka skriva om det till C#, eftersom resten av sidan är C#. Anledningen till det är att vår tredjepartleverantör som levererar våra specialmoduler gör allt i C#.

Jag som normalt sysslar med PHP tycker C# har skönare syntax, därför kör jag hellre C#.

Permalänk: https://www.webforum.nu/p/2185849

## #14 — MickeA.com, 2009-05-26T14:56Z

Nått sånt här blir det översatt:

```
protected void ddlFeedLanguage_DataBound(System.Object sender, System.EventArgs e)
{
   DropDownList ddlFeedLanguage = default(DropDownList);
   ddlFeedLanguage = (DropDownList)sender;
   int i = 0;
   for (i = 0; i <= ddlFeedLanguage.Items.Count - 1; i++) {
     ListItem objListItem = new ListItem();
     objListItem = ddlFeedLanguage.Items(i);
     System.Globalization.CultureInfo objCultureInfo = new System.Globalization.CultureInfo(objListItem.Text);
     objListItem.Text = objCultureInfo.DisplayName;
   }
   int kalle = 0;
}
```

Men ska jag fortfarande ha kvar:

```
void Page_Load(System.Object sender, System.EventArgs e)
{
   ddlFeedLanguage.DataSource = DotNetNuke.Services.Localization.Localization.GetEnabledLocales().Keys;
   ddlFeedLanguage.DataBind();
}
```

?

Förstår inte riktigt hur det här hänger ihop.

Permalänk: https://www.webforum.nu/p/2185850

## #15 — johaseo, 2009-05-26T15:22Z

```
        protected void ddlFeedLanguage_DataBound(object sender, System.EventArgs e)
        {
            DropDownList ddlFeedLanguage =new  DropDownList();

            ddlFeedLanguage = (DropDownList)sender;
            for (int i = 0; i < ddlFeedLanguage.Items.Count; i++)
            {
                ListItem objListItem = new ListItem();
                objListItem = ddlFeedLanguage.Items[i];
                System.Globalization.CultureInfo objCultureInfo = new System.Globalization.CultureInfo(objListItem.Text);
                objListItem.Text = objCultureInfo.DisplayName;
            }
        }
```

så här är en fungerande och testad kod

jo du skall fortfarande ha med 

```
                ddlFeedLanguage.DataSource = DotNetNuke.Services.Localization.Localization.GetEnabledLocales().Keys;
                ddlFeedLanguage.DataBind();
```

annars har du inte bundigt data vid kontrollen. Du måste även ha med OnDataBound i Html koden

```
<asp:DropDownList ID="ddlFeedLanguage" OnDataBound="ddlFeedLanguage_DataBound" runat="Server"></asp:DropDownList>
```

Permalänk: https://www.webforum.nu/p/2185852

## #16 — johaseo, 2009-05-26T15:23Z

Det där lät ju intressant ... ni är inte på jakt efter en mycket erfaren dotnetnuke tredjepartsleverantör?

Permalänk: https://www.webforum.nu/p/2185853

## #17 — MickeA.com, 2009-05-26T15:58Z

Det där fungerar kanon, men jag vill ju använda min Teleriklista och när jag kör med den får jag: 

```
Unable+to+cast+object+of+type+'Telerik.Web.UI.RadComboBox'+to+type+'System.Web.UI.WebControls.DropDownList'
```

Tanken med det hela är att jag senare även ska lägga till resp. flagga som ikon före texten.

Såhär:
<http://demos.telerik.com/aspnet-ajax/combobox/examples/functionality/textwithicons/defaultcs.aspx>

Permalänk: https://www.webforum.nu/p/2185857

## #18 — MickeA.com, 2009-05-26T16:04Z

Såhär lägger man till en rad i listan:

```
RadComboBox1.Items.Insert(0, new RadComboBoxItem(TextBox1.Text));
```

Så jag måste få in det i loopen på något sätt.

Permalänk: https://www.webforum.nu/p/2185859

## #19 — MickeA.com, 2009-05-26T16:09Z

Yes! Om man försöker lite själv så är det inte så svårt.

```
protected void ddlFeedLanguage_DataBound(object sender, System.EventArgs e)
{
	RadComboBox ddlFeedLanguage =new  RadComboBox();
	ddlFeedLanguage = (RadComboBox)sender;
	for (int i = 0; i < ddlFeedLanguage.Items.Count; i++)
	{
		RadComboBoxItem objListItem = new RadComboBoxItem();
		objListItem = ddlFeedLanguage.Items[i];
		System.Globalization.CultureInfo objCultureInfo = new System.Globalization.CultureInfo(objListItem.Text);
		objListItem.Text = objCultureInfo.DisplayName;
		objListItem.ImageUrl = "/images/loadingico.gif";
	}
}
```

Permalänk: https://www.webforum.nu/p/2185860

## #20 — MickeA.com, 2009-05-26T16:26Z

> **[johaseo skrev:](https://www.webforum.nu/p/1469008)**
>
> Det där lät ju intressant ... ni är inte på jakt efter en mycket erfaren dotnetnuke tredjepartsleverantör?

Lite stressad nu, drar ett PM under morgondagen!

Permalänk: https://www.webforum.nu/p/2185862

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/178739-dotnetnuke-drodown-bind  
Nästa sida: https://www.webforum.nu/amne/dotnet/178739-dotnetnuke-drodown-bind/page2.md
