In this Post I will demonstrate how you can use a simple ASP.NET DropDownList control to display hierarchical data.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default6.aspx.cs" Inherits="Default6" %>
<!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>Untitled Page</title>
<style type="text/css">
.ParentChild
{
color:red;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<div>
<asp:DropDownList ID="ddlCategories" runat="server" OnPreRender="ddlCategories_PreRender" />
<asp:RequiredFieldValidator ID="rfvCategories" runat="server" ControlToValidate="ddlCategories"
InitialValue="Please select " ErrorMessage="Please select " />
<br />
<br />
<asp:Button ID="Button1" runat="server" Text="Select" OnClick="Button1_Click" />
<asp:Label ID="lblMessage" runat="server" />
</div>
</div>
</form>
</body>
</html>
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class Default6 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Bind(); } } private void Bind() { DataSet ds = Data() as DataSet; foreach (DataRow row in ds.Tables[0].Rows) { int ParentID = Convert.ToInt32(row["ID"]); string ParentName = row["Name"] as String; ddlCategories.Items.Add(new ListItem(String.Empty, String.Empty)); ddlCategories.Items.Add(new ListItem(ParentName, "0")); ddlCategories.Items.Add(new ListItem(String.Empty, String.Empty)); DataRow[] childRows = ds.Tables[1].Select("ID = " + ParentID); foreach (DataRow childRow in childRows) { ddlCategories.Items.Add(new ListItem((string)childRow["Qul"], (childRow["ID"].ToString()))); } } } private DataSet Data() { DataTable dt = new DataTable(); dt.Columns.Add("Id", typeof(int)); dt.Columns.Add("Name", typeof(string)); dt.Rows.Add(new object[] { 1, "aaaa" }); dt.Rows.Add(new object[] { 2, "bbbb" }); dt.Rows.Add(new object[] { 3, "cccc" }); dt.TableName = "Parent"; DataTable dtc = new DataTable(); dtc.Columns.Add("Id", typeof(int)); dtc.Columns.Add("Qul", typeof(string)); dtc.Rows.Add(new object[] { 1, "child1" }); dtc.Rows.Add(new object[] { 1, "chid12" }); dtc.Rows.Add(new object[] { 1, "child13" }); dtc.Rows.Add(new object[] { 2, "child21" }); dtc.Rows.Add(new object[] { 2, "child22" }); dtc.Rows.Add(new object[] { 3, "child31" }); dtc.Rows.Add(new object[] { 3, "child32" }); dtc.Rows.Add(new object[] { 3, "child32" }); dtc.TableName = "Child"; DataSet ds = new DataSet(); ds.Tables.Add(dt); ds.Tables.Add(dtc); Session["Parent"] = dt; return ds; } protected void Button1_Click(object sender, EventArgs e) { { string selectedValue = String.Empty; if (Page.IsValid) { selectedValue = ddlCategories.SelectedValue; if (!String.IsNullOrEmpty(selectedValue) && selectedValue.Equals("0") == false) { lblMessage.Text = "Selected Value is " + "#" + selectedValue; } else { lblMessage.Text = "Please select a value"; } } } } protected void ddlCategories_PreRender(object sender, EventArgs e) { foreach (ListItem item in ddlCategories.Items) { if (item.Value.Equals("0")) { item.Attributes.Add("class", "ParentChild"); } } } }


No comments:
Post a Comment