Click here to Skip to main content
Click here to Skip to main content
Go to top

The Localizable Dropdown for ASP.NET 2.0

, 1 Jan 2009
Rate this:
Please Sign up or sign in to vote.
Simple way of binding dropdown control to resource files

Introduction

The code shows a simple way of binding ListItem based controls such as dropdown to a resource file. 

Background 

The idea is to store data in XML format instead of name value collection and bind it to .NET controls using XMLDataSource object.  

Using the Code  

I've added a string resource "MyCountryList" that contains XML data for dropdown control.  

Resource.en-US.resx

<countries>
  <country text="Pakistan" value="PK"/>
  <country text="Iran" value="IR"/>
  <country text="Afghanistan" value="AF"/>
</countries>

Resource.es-MX.resx

<countries>
  <country text="Pakistan-Spanish" value="PK"/>
  <country text="Iran-Spanish" value="IR"/>
  <country text="Afghanistan-Spanish" value="AF"/>
</countries>

Default.aspx

<form id="form1" runat="server">
        <asp:HyperLink ID="HyperLink1" runat="server" 
		NavigateUrl="~/Default.aspx?lang=esp">Esp</asp:HyperLink>
          
        <asp:HyperLink ID="HyperLink2" runat="server" 
		NavigateUrl="~/Default.aspx?lang=eng">Eng</asp:HyperLink><br />
        <br />
        <asp:Localize ID="Localize1" runat="server" 
		Text="<%$ Resources:Resource, Greeting%>"></asp:Localize>
        <br />
        <asp:XmlDataSource ID="XmlDataSource1" runat="server"></asp:XmlDataSource>
        <asp:DropDownList ID="DropDownList1" runat="server" >
        </asp:DropDownList>
</form>

Default.aspx.cs

protected void Page_Load(object sender, EventArgs e)
    {
        // loading xml from resource file into xmldatasource object
        XmlDataSource1.Data = Resources.Resource.MyCountryList;
        XmlDataSource1.EnableCaching = false;
        XmlDataSource1.DataBind();        

        DropDownList1.DataSourceID = "XmlDataSource1";
        DropDownList1.DataTextField = "text";
        DropDownList1.DataValueField = "value";
        DropDownList1.DataBind();
    }
   //The setting up the culture
    protected override void InitializeCulture()
    {
        string lang = "en-US";
        if (Request.QueryString["lang"] != null)
        {
            switch (Request.QueryString["lang"])
            {
                case "esp":
                    lang = "es-MX";
                    break;
                case "eng":
                    lang = "en-US";
                    break;
            }
        }
        System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo(lang);
        System.Threading.Thread.CurrentThread.CurrentCulture = ci;
        System.Threading.Thread.CurrentThread.CurrentUICulture = ci;
        base.InitializeCulture();
    } 

The lines in italics show the 2 ways to bind to resource files. You can also download the source code attached to this article.

History

  • 1st January, 2009: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Shahid Syed
Software Developer (Senior) Mobile Complete Inc. (DeviceAnywhere)
Pakistan Pakistan
No Biography provided

Comments and Discussions

 
GeneralProblems with Japanese PinmemberNickShelomanov11-Jan-09 22:49 
Hi, that's a great approach and I've actually taken it further and just defined the DataFile property in the resource file instead and it all seems fine, however, when I have Japanese characters in my XML file (which show up fine) I seem to get little squares in the control instead of japanese characters... Any ideas why?
GeneralBest Localization Plug-in for Visual Studio. PinmemberAlexander Nesterenko2-Jan-09 1:34 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web03 | 2.8.140921.1 | Last Updated 1 Jan 2009
Article Copyright 2009 by Shahid Syed
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid