I could name 2 solutions to this questions.
First one involves using Cascading Drop Down from the AJAX Toolkit for ASP.NET pages.
You have here references and an example:
http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/CascadingDropDown/CascadingDropDown.aspx
It is somehow cleaner
and it doesn't cause postbacks, but you have to use that toolkit. But it is nice to learn to use it, because it offers others nice facilities.
The second involves adding for your DropDownList a handler for the OnSelectedIndexChange event. So when the user selects a value from the first dropdown, the server side catches the event and populates the second DropDown with the necessary values. Due to the fact that this requires server side operations, it can be rather annoying to reload the page after a selection is made.
The client side should look like this:
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack = true OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"></asp:DropDownList>
Where in the server side:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList2.Items.Clear();
DropDownList2.Items.Add("text");
....
}