Skip to main content
Email Password   helpLost your password?

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

You must Sign In to use this message board.
 
 
Per page   
 FirstPrevNext
GeneralProblems with Japanese Pin
NickShelomanov
23:49 11 Jan '09  
GeneralBest Localization Plug-in for Visual Studio. Pin
Alexander Nesterenko
2:34 2 Jan '09  


Last Updated 1 Jan 2009 | Advertise | Privacy | Terms of Use | Copyright © CodeProject, 1999-2009