There are tow ways. But the first step is to create you DB tables for this. i will show you some of my code. let say that i have some dropdown lists:
the CodeL() is to populate the first dropdownlist on page load.
public void CodeL()
{
code.Items.Clear();
code.AppendDataBoundItems = true;
code.Items.Add(new ListItem("--Select code--"));
OrdersDataContext db = new OrdersDataContext();
var selectCodes = (from t in db.codeTs
select t).OrderBy(t => t.code);
code.DataSource = selectCodes;
code.DataTextField = "code";
code.DataValueField = "id";
code.DataBind();
}
protected void code_SelectedIndexChanged(object sender, EventArgs e)
{
type.Items.Clear();
type.Items.Add(new ListItem("--Select type--"));
dem.Items.Clear();
dem.Items.Add(new ListItem("--Select dimension--"));
p.Items.Clear();
p.Items.Add(new ListItem("--Select p--"));
type.AppendDataBoundItems = true;
OrdersDataContext db = new OrdersDataContext();
var selectType = (from t in db.typeTs
where (t.codeId == Convert.ToInt32(code.SelectedItem.Value))
select t).OrderBy(t => t.type);
type.DataSource = selectType;
type.DataTextField = "type";
type.DataValueField = "id";
type.DataBind();
if (type.Items.Count > 2)
{
type.Enabled = true;
}
else
{
type.Enabled = false;
dem.Enabled = false;
}
}
protected void type_SelectedIndexChanged(object sender, EventArgs e)
{
dem.Items.Clear();
dem.Items.Add(new ListItem("--Select dimension--"));
p.Items.Clear();
p.Items.Add(new ListItem("--Select p--"));
dem.AppendDataBoundItems = true;
OrdersDataContext db = new OrdersDataContext();
var selectDimension = (from t in db.dimTs
where (t.typeId == Convert.ToInt32(type.SelectedItem.Value))
orderby t.id
select t);
dem.DataSource = selectDimension;
dem.DataTextField = "dimension";
dem.DataValueField = "id";
dem.DataBind();
if (dem.Items.Count > 2)
{
dem.Enabled = true;
}
else
{
dem.Enabled = false;
p.Enabled = false;
}
}
etc...
and in aspx file
<asp:dropdownlist id="code" runat="server" autopostback="true" xmlns:asp="#unknown">
BackColor="White" Height="22px"
OnSelectedIndexChanged="code_SelectedIndexChanged" TabIndex="4"
ViewStateMode="Enabled" Width="139px">
<asp:listitem></asp:listitem>
</asp:dropdownlist>
<asp:dropdownlist id="type" runat="server" autopostback="True" xmlns:asp="#unknown">
BackColor="White" Enabled="False" Height="22px"
OnSelectedIndexChanged="type_SelectedIndexChanged" TabIndex="5"
ViewStateMode="Enabled" Width="173px">
<asp:listitem></asp:listitem>
</asp:dropdownlist>
<asp:dropdownlist id="dem" runat="server" autopostback="True" backcolor="White" xmlns:asp="#unknown">
Enabled="False" Height="22px" onselectedindexchanged="dem_SelectedIndexChanged"
TabIndex="6" ViewStateMode="Enabled" Width="147px">
<asp:listitem></asp:listitem>
</asp:dropdownlist>
Second way with webservices
using AjaxControlToolkit;
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Data.SqlClient;
using System.Data;
using System.Data.Linq;
using System.Linq;
using System.Configuration;
using System.Web.Script.Services;
namespace OrderForm2._2
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService
{
public WebService()
{
}
[WebMethod]
public CascadingDropDownNameValue[] GetCodes(string knownCategoryValues, string category)
{
OrdersDataContext db = new OrdersDataContext();
IEnumerable<cascadingdropdownnamevalue> vals = null;
vals = (from c in db.codeTs
select new CascadingDropDownNameValue
{
name = c.code,
value = c.id.ToString(),
}).OrderBy(t => t.name);
return vals.ToArray<cascadingdropdownnamevalue>();
}
[WebMethod]
public CascadingDropDownNameValue[] GetType(string knownCategoryValues, string category)
{
OrdersDataContext db = new OrdersDataContext();
IEnumerable<cascadingdropdownnamevalue> vals = null;
StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
short code_Id;
if (!kv.ContainsKey("code") || !short.TryParse(kv["code"], out code_Id))
{
return null;
}
vals = (from tp in db.typeTs
where tp.codeId == code_Id
select new CascadingDropDownNameValue
{
name = tp.type,
value = tp.id.ToString(),
}).OrderBy(t => t.name);
return vals.ToArray<cascadingdropdownnamevalue>();
}
[WebMethod]
public CascadingDropDownNameValue[] GetDimension(string knownCategoryValues, string category)
{
OrdersDataContext db = new OrdersDataContext();
IEnumerable<cascadingdropdownnamevalue> vals = null;
StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
short type_Id;
if (!kv.ContainsKey("type") || !short.TryParse(kv["type"], out type_Id))
{
return null;
}
vals = (from tp in db.dimTs
where tp.typeId == type_Id
select new CascadingDropDownNameValue
{
name = tp.dimension,
value = tp.id.ToString(),
}).OrderBy(t => t.name);
return vals.ToArray<cascadingdropdownnamevalue>();
}
[WebMethod]
public CascadingDropDownNameValue[] GetP(string knownCategoryValues, string category)
{
OrdersDataContext db = new OrdersDataContext();
IEnumerable<cascadingdropdownnamevalue> vals = null;
StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
short dim_Id;
if (!kv.ContainsKey("dimension") || !short.TryParse(kv["dimension"], out dim_Id))
{
return null;
}
vals = from tp in db.pTs
where tp.dimId == dim_Id
select new CascadingDropDownNameValue
{
name = tp.p,
value = tp.id.ToString(),
} ;
return vals.ToArray<cascadingdropdownnamevalue>();
}
[WebMethod]
public CascadingDropDownNameValue[] GetQuantity(string knownCategoryValues, string category)
{
OrdersDataContext db = new OrdersDataContext();
IEnumerable<cascadingdropdownnamevalue> vals = null;
StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
short p_Id;
if (!kv.ContainsKey("p") || !short.TryParse(kv["p"], out p_Id))
{
return null;
}
vals = from tp in db.Pr_min_quantities
where tp.prod_id == p_Id
select new CascadingDropDownNameValue
{
name = tp.min_quant,
value = tp.id.ToString(),
};
return vals.ToArray<cascadingdropdownnamevalue>();
}
}
}
in aspx code
<ajaxtoolkit:cascadingdropdown id="code_CascadingDropDown" xmlns:ajaxtoolkit="#unknown">
runat="server" TargetControlID="code" LoadingText="Loding ..."
PromptText="Select Code" ServiceMethod="GetCodes" ServicePath="~/WebService.asmx"
Category="Code" UseContextKey="True" Enabled="true">
</ajaxtoolkit:cascadingdropdown>
<asp:dropdownlist id="type" runat="server" backcolor="White" height="22px" xmlns:asp="#unknown">
TabIndex="5" Width="170px" >
<asp:listitem></asp:listitem>
</asp:dropdownlist>
<ajaxtoolkit:cascadingdropdown id="type_CascadingDropDown" xmlns:ajaxtoolkit="#unknown">
runat="server" TargetControlID="type" Enabled="True"
ParentControlID="code" LoadingText="Loding ..." PromptText="Select Type"
ServiceMethod="GetType" ServicePath="~/WebService.asmx"
Category="type" UseContextKey="True">
</ajaxtoolkit:cascadingdropdown>
<asp:dropdownlist id="dem" runat="server" backcolor="White" height="22px" xmlns:asp="#unknown">
TabIndex="6" Width="170px">
<asp:listitem></asp:listitem>
</asp:dropdownlist>
<ajaxtoolkit:cascadingdropdown id="dem_CascadingDropDown" xmlns:ajaxtoolkit="#unknown">
runat="server" TargetControlID="dem" Enabled="True"
ParentControlID="type" LoadingText="Loding ..." PromptText="Select Dimension"
ServiceMethod="GetDimension" ServicePath="~/WebService.asmx"
Category="dimension" UseContextKey="True">
</ajaxtoolkit:cascadingdropdown>
<asp:dropdownlist id="p" runat="server" backcolor="White" height="22px" xmlns:asp="#unknown">
TabIndex="7" Width="130px" style="margin-top: 0px">
<asp:listitem></asp:listitem>
</asp:dropdownlist>
<ajaxtoolkit:cascadingdropdown id="p_CascadingDropDown" xmlns:ajaxtoolkit="#unknown">
runat="server" TargetControlID="p" Enabled="True"
ParentControlID="dem" LoadingText="Loding ..." PromptText="Select P"
ServiceMethod="GetP" ServicePath="~/WebService.asmx"
Category="p" UseContextKey="True">
</ajaxtoolkit:cascadingdropdown>
<asp:dropdownlist id="minquant" runat="server" backcolor="White" height="22px" xmlns:asp="#unknown">
TabIndex="7" Width="100px" style="margin-top: 0px"><asp:listitem></asp:listitem>
</asp:dropdownlist>
As i said at begin you should modified yours tables too.. For example:
Code_Table
id
code
Type_table
id
type
code_id
Dimension_Table
id
dim
type_id
etc...