I prepared a scenario for players and teams. I have written classes below
[Serializable]
public class Team
{
public string Name { get; set; }
}
[Serializable]
public class Player
{
public Team Team { get; set; }
public string Name { get; set; }
public override string ToString()
{
return this.Name;
}
}
My WebForm code is below.
<body>
<form id="form1" runat="server">
<div>
<table class="style1">
<tr>
<td>
Teams</td>
<td>
<asp:DropDownList ID="ddlTeam" runat="server"
onselectedindexchanged="ddlTeam_SelectedIndexChanged" AutoPostBack="True">
</asp:DropDownList>
</td>
</tr>
<tr>
<td>
Players</td>
<td>
<asp:DropDownList ID="ddlPlayer" runat="server">
</asp:DropDownList>
</td>
</tr>
<tr>
<td>
</td>
<td>
<asp:Literal ID="ltResult" runat="server"></asp:Literal>
</td>
</tr>
</table>
</div>
</form>
</body>
and the codebehind is below. This is the example I stored my data on ViewState so I marked my classes as Serializable.
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack) return;
FillTeam();
}
private void FillTeam()
{
Team t1 = new Team { Name = "Barcelona" };
Team t2 = new Team { Name = "Milan" };
Team t3 = new Team { Name = "Bayern Munchen" };
List<Player> players = new List<Player>();
players.Add(new Player { Team = t1, Name = "Xavi" });
players.Add(new Player { Team = t1, Name = "Iniesta" });
players.Add(new Player { Team = t1, Name = " Busquets" });
players.Add(new Player { Team = t2, Name = "Ibrahimovic" });
players.Add(new Player { Team = t2, Name = "Gattuso" });
players.Add(new Player { Team = t2, Name = "Robinho" });
players.Add(new Player { Team = t2, Name = "Pato" });
players.Add(new Player { Team = t3, Name = "Ribery" });
players.Add(new Player { Team = t1, Name = "Robben" });
ViewState["players"] = players;
ddlTeam.Items.Add("Choose...");
ddlTeam.Items.Add(new ListItem { Text = t1.Name });
ddlTeam.Items.Add(new ListItem { Text = t2.Name });
ddlTeam.Items.Add(new ListItem { Text = t3.Name });
ddlTeam.SelectedIndex = 0;
}
protected void ddlTeam_SelectedIndexChanged(object sender, EventArgs e)
{
List<Player> players = (List<Player>)ViewState["players"];
if (null != players)
{
var playerinTeams = from player in players
where player.Team.Name == ddlTeam.SelectedItem.Text
select player;
ddlPlayer.DataSource = playerinTeams;
ddlPlayer.DataBind();
}
}
}