Click here to Skip to main content
15,884,099 members
Articles / Web Development / ASP.NET

The Localizable Dropdown for ASP.NET 2.0

Rate me:
Please Sign up or sign in to vote.
3.50/5 (3 votes)
1 Jan 2009CPOL 37.7K   296   17   2
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

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

Resource.es-MX.resx

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

Default.aspx

ASP.NET
<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

C#
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)


Written By
Software Developer (Senior) Mobile Complete Inc. (DeviceAnywhere)
Pakistan Pakistan
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
-- No messages could be retrieved (timeout) --