This Example explains how to Populate Or Bind DropDownList With XML File Data In Asp.Net In 3/n Tier Architecture 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.
Another format can be
Writing following code in Page_Load event is enough to bind dropdownlist from these types of XML data.
C#
VB.NET
If XML format is mix of above two.
We need to loop through nodes to fine value of ID attribute.
C#
VB
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)
Business Access Layer (BAL)
Write code in Page_Load event of aspx page (Presentation Layer)
Place one DropdownList on the page.
<asp:DropDownList ID="DropDownList1"
runat="server"
onselectedindexchanged
="DropDownList1_SelectedIndexChanged">
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; } }
If you like this post than join us or share
1 comments:
This comment has been removed by a blog administrator.
Post a Comment