Introduction
This is easy way to bind dropdown list to xml file, let us create the sample department xml file as shown below
<Company>
<department>
<deptId>1</deptId>
<deptName>Finance</deptName>
</department>
<department>
<deptId>2</deptId>
<deptName>Human Resource</deptName>
</department>
<department>
<deptId>3</deptId>
<deptName>Information Technology</deptName>
</department>
<department>
<deptId>4</deptId>
<deptName>System Network</deptName>
</department>
<department>
<deptId>5</deptId>
<deptName>Customer Support</deptName>
</department>
</Company>
Store the above xml file in the application root and read the department.xml file and store into the dataset using ReadXml() method which is available in the dataset and then finally bind with the dropdown list. Design the page as shown below
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm6.aspx.cs" Inherits="WebApplication1.WebForm6" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Sample binding xml file into dropdown list</title>
</head>
<body>
<form id="form1" runat="server">
<div>
Department : <asp:DropDownList ID="DrpDepartment" AutoPostBack="true"
runat="server" onselectedindexchanged="DrpDepartment_SelectedIndexChanged">
</asp:DropDownList>
</div>
</form>
<p>
Selected Department :
<asp:Label ID="lblDept" runat="server" Text="None"></asp:Label>
</p>
</body>
</html>
Write the below code in the page load event and call the LoadDropdownList method and assign the dropdown list DataTextField and DataValueField properties. The LoadDropdownList() method will execute only once when the page loads because of verifying through IsPostBack property and it would not call each page loads/post backs
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (!IsPostBack)
{
LoadDropdownList();
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
private void LoadDropdownList()
{
try
{
DataSet dsDept = new DataSet();
dsDept.ReadXml(Server.MapPath("Departments.xml"));
DrpDepartment.DataSource = dsDept;
DrpDepartment.DataTextField = "deptName";
DrpDepartment.DataValueField = "deptId";
DrpDepartment.DataBind();
DrpDepartment.Items.Insert(0, new ListItem("-- Select --", "0"));
}
catch(Exception ex)
{
throw ex;
}
}
To retrieve the dropdown list selected value, create the SelectedIndexChanged event and the write the below code. Dropdown list autopostback property value must be true so that post back will be happen when the selection of dropdown control.
protected void DrpDepartment_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
lblDept.Text = DrpDepartment.SelectedItem.Text + "-" + DrpDepartment.SelectedValue;
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
Conclusion
In this aricle, we know how to bind dropdown list with xml file in a simple way.