Using C# And VB.
Place one DropdownList on the page.
XML Data Can be in various formats, i'll use 3 different ones shown below.
Sample 1.
1: <?xml version="1.0" encoding="utf-8" ?>
2: <Employees>
3: <Detail>
4: <ID>1</ID>
5: <Name>Csharp</Name>
6: </Detail>
7: <Detail>
8: <ID>2</ID>
9: <Name>AspNet</Name>
10: </Detail>
11: <Detail>
12: <ID>3</ID>
13: <Name>Articles</Name>
14: </Detail>
15: </Employees>
Another format can be
1: <?xml version="1.0" encoding="utf-8" ?>
2: <Employees>
3: <Detail ID="1" Name="Csharp"></Detail>
4: <Detail ID="2" Name="AspNet"></Detail>
5: <Detail ID="3" Name="Articles"></Detail>
6: </Employees>
Writing following code in Page_Load event is enough to bind dropdownlist from these types of XML data.
C#
using System.Data;
using System.Xml;
protected void Page_Load(object sender, EventArgs e)
{
DataSet dsXml = new DataSet();
dsXml.ReadXml(Server.MapPath("~/XMLFile2.xml"));
DropDownList1.DataSource = dsXml;
DropDownList1.DataTextField = "Name";
DropDownList1.DataValueField = "ID";
DropDownList1.DataBind();
DropDownList1.AutoPostBack = true;
}
VB.NET
Protected Sub Page_Load(sender As Object, e As EventArgs)
Dim dsXml As New DataSet()
dsXml.ReadXml(Server.MapPath("~/XMLFile2.xml"))
DropDownList1.DataSource = dsXml
DropDownList1.DataTextField = "Name"
DropDownList1.DataValueField = "ID"
DropDownList1.DataBind()
DropDownList1.AutoPostBack = True
End Sub
If XML format is mix of above two.
1: <?xml version="1.0" encoding="utf-8" ?>
2: <Details>
3: <Name ID="1">Amit</Name>
4: <Name ID="2">Jain</Name>
5: <Name ID="3">Csharp</Name>
6: <Name ID="4">AspNet</Name>
7: <Name ID="5">Articles</Name>
8: </Details>
We need to loop through nodes to fine value of ID attribute.
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("~/XMLFile.xml"));
XmlNodeList list = doc.GetElementsByTagName("Name");
foreach (XmlNode node in list)
{
ListItem lItem = new ListItem(node.InnerText, node.Attributes["ID"].Value);
DropDownList1.Items.Add(lItem);
}
DropDownList1.Items.Insert(0, "--Select--");
DropDownList1.SelectedIndex = 0;
DropDownList1.AutoPostBack = true;
}
}
VB
Protected Sub Page_Load(sender As Object, e As EventArgs)
If Not IsPostBack Then
Dim doc As New XmlDocument()
doc.Load(Server.MapPath("~/XMLFile.xml"))
Dim list As XmlNodeList = doc.GetElementsByTagName("Name")
For Each node As XmlNode In list
Dim lItem As New ListItem(node.InnerText, node.Attributes("ID").Value)
DropDownList1.Items.Add(lItem)
Next
DropDownList1.Items.Insert(0, "--Select--")
DropDownList1.SelectedIndex = 0
DropDownList1.AutoPostBack = True
End If
End Sub
To Bind DropDownList in 3 tier architecture environment, add to new class files in App_Code folder of application and name them DataLayer.cs and BusinessLayer.cs
Write Following code in these class respectively.
Data Access Layer (DAL)
using System.Web;
using System.Xml;
public class DataLayer
{
public DataLayer()
{
}
public XmlDocument GetXmlData()
{
XmlDocument doc = new XmlDocument();
doc.Load(HttpContext.Current.Server.MapPath("~/XMLFile.xml"));
return doc;
}
}
Business Access Layer (BAL)
using System.Web.UI.WebControls;
using System.Xml;
public class BusinessLayer
{
public BusinessLayer()
{
}
public ListItemCollection BindDropDownList()
{
ListItemCollection ddlItems = new ListItemCollection();
DataLayer objDAL = new DataLayer();
XmlNodeList list = objDAL.GetXmlData().GetElementsByTagName("Name");
foreach (XmlNode node in list)
{
ListItem item = new ListItem(node.InnerText, node.Attributes["ID"].Value);
ddlItems.Add(item);
}
return ddlItems;
}
}
Write code in Page_Load event of aspx page (Presentation Layer)
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BusinessLayer objBAL = new BusinessLayer();
DropDownList1.DataSource = objBAL.BindDropDownList();
DropDownList1.DataBind();
DropDownList1.Items.Insert(0, "--Select--");
DropDownList1.SelectedIndex = 0;
DropDownList1.AutoPostBack = true;
}
}
Other asp.net,C#,VB.NET articles: