Step 1: Create a table in database

create table test
(
state1 varchar(50),
city varchar(50)
)

Step 2: In the .aspx Page

<select id="statelist" runat="server" onchange="showCity()" style="width: 160px">
<option></option>
</select>
<asp:DropDownList ID="citylist" runat="server" Width="184px">
</asp:DropDownList>

Take statelist for State and citylist for City

When you select any item from statelist the citylist will automatically fill because of ajax

Step 3: Write this in the <head> Part

<script language="JavaScript" type="text/javascript" >
var xmlHttp
var arr;
function showCity() {
xmlHttp = GetXmlHttpObject()
var url = "Default.aspx"
url = url + "?name=" + document.getElementById('statelist').value
xmlHttp.onreadystatechange = stateChanged
xmlHttp.open("GET", url, true)
xmlHttp.send(null)
return false;
}
function stateChanged() {
if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
var str;
str = xmlHttp.responseText;
arr = str.split(",");
var i;
for (i = 0; i < arr.length; i++) {
dd2 = document.getElementById("citylist")
var theOption = new Option;
theOption.text = arr[i];
theOption.value = arr[i];
dd2.options[i] = theOption;
}
}
}
function GetXmlHttpObject() {
var objXMLHttp = null
if (window.XMLHttpRequest) {
objXMLHttp = new XMLHttpRequest()
}
else if (window.ActiveXObject) {
objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP")
}
return objXMLHttp
}
</script>

Step 4: In the .cs page

SqlConnection con = new SqlConnection("data source = MY\\SQLEXPRESS; initial catalog = try; integrated security=true");
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
con.Open();
SqlCommand cmd = new SqlCommand("select * from test", con);
SqlDataReader dr;
dr = cmd.ExecuteReader();
statelist.DataSource = dr;
statelist.DataTextField = "state";
statelist.DataBind();
dr.Close();
con.Close();
}
if (Request.QueryString["name"] != null)
{
string name = Request.QueryString["name"];
Response.Clear();
con.Open();
SqlCommand cmd = new SqlCommand("select * from test where state=@state", con);
cmd.Parameters.AddWithValue("@state", name);
SqlDataReader dr;
dr = cmd.ExecuteReader();
string str = "";
int a = 0;
while (dr.Read())
{
if (a == 0)
str += dr["city"].ToString();
else
str += "," + dr["city"].ToString();
a++;
}
Response.Write(str);
Response.End();
con.Close();
}
}