Fig: Binding asp.net dropdownlist control to an xml file
Today I am discussing the simple way to bind an asp.net dropdownlist control to an xml file. Besides binding the dropdownlist controls to an xml file, we will also sort the items in the ascending order.
Let us define the xml file first. This consists of Country object with properties ID and Name.
- xml version="1.0" encoding="utf-8" ?>
- <Countries>
- <Country>
- <ID>1</ID>
- <Name>Nepal</Name>
- </Country>
- <Country>
- <ID>2</ID>
- <Name>India</Name>
- <Country>
- <ID>3</ID>
- <Name>China</Name>
- </Country>
- <Country>
- <ID>4</ID>
- <Name>Bhutan</Name>
- </Country>
- <Country>
- <ID>5</ID>
- <Name>USA</Name>
- </Country>
- </Country>
- </Countries>
- Select from the list of countries:</b> <asp:DropDownList ID="ddlCountry" runat="server"
- Width="160px"></asp:DropDownList>
- //page load event handler
- protected void Page_Load(object sender, EventArgs e)
- {
- if (!IsPostBack)
- {
- //call to the function to populate dropdownlist from xml
- PopulateDDLFromXMLFile();
- }
- }
- //populates the dropdownlist from xml file
- public void PopulateDDLFromXMLFile()
- {
- DataSet ds = new DataSet();
- ds.ReadXml(MapPath("~/Resources/XMLFile.xml"));
- //get the dataview of table "Country", which is default table name
- DataView dv = ds.Tables["Country"].DefaultView;
- //or we can use:
- //DataView dv = ds.Tables[0].DefaultView;
- //Now sort the DataView vy column name "Name"
- dv.Sort = "Name";
- //now define datatext field and datavalue field of dropdownlist
- ddlCountry.DataTextField = "Name";
- ddlCountry.DataValueField = "ID";
- //now bind the dropdownlist to the dataview
- ddlCountry.DataSource = dv;
- ddlCountry.DataBind();
- }