1<asp:GridView ID="gvStates" AutoGenerateColumns="false" runat="server" OnRowCreated="gvStates_RowCreated">
2<Columns>
3 <asp:BoundField HeaderText="State" DataField="Name" />
4 <asp:TemplateField HeaderText="Cities">
5 <ItemTemplate>
6 <asp:DropDownList ID="ddlCities" AutoPostBack="true" runat="server" OnSelectedIndexChanged="ddlCities_SelectedIndexChanged">
7 </asp:DropDownList>
8 </ItemTemplate>
9 </asp:TemplateField>
10</Columns>
11</asp:GridView>
12<asp:Label ID="lblCity" runat="server" Text="Label"></asp:Label>
13
14
15protected void Page_Load(object sender, EventArgs e)
16 {
17 if (!IsPostBack)
18 {
19 // Create states array and bind it to Grid
20 ArrayList states = new ArrayList();
21 string[] cities = new string[] { "Portland", "Salem", "Eugene" };
22 State state = new State("OR", cities);
23 states.Add(state);
24 cities = new string[] { "Seattle", "Tacoma", "Olympia" };
25 state = new State("WA", cities);
26 states.Add(state);
27 this.gvStates.DataSource = states;
28 this.gvStates.DataBind();
29 }
30 }
31 protected void gvStates_RowCreated(object sender, GridViewRowEventArgs e)
32 {
33 if (!IsPostBack)
34 {
35 if (e.Row.RowType == DataControlRowType.DataRow)
36 {
37 // Bind drop down to cities
38 DropDownList ddl = (DropDownList)e.Row.FindControl("ddlCities");
39 ddl.DataSource = ((State)e.Row.DataItem).Cities;
40 ddl.DataBind();
41 }
42 }
43 }
44 protected void ddlCities_SelectedIndexChanged(object sender, EventArgs e)
45 {
46 this.lblCity.Text = ((DropDownList)sender).SelectedValue;
47 }