Click here to Skip to main content
15,890,897 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
hi,
i want to bind the two dropdownlist and 2nd dropdownlist data must be based on the first dropdownlist selection that is parent-child relation i want do this using LINQ query

plz provide me code or example to do this process


Thanks inadvance
Posted
Comments
Sandeep Mewara 11-May-12 9:59am    
Did you try anything?

I prepared a scenario for players and teams. I have written classes below

C#
[Serializable]
    public class Team
    {
        public string Name { get; set; }

    }


SQL
[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.

XML
<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>
                    &nbsp;</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.
C#
protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack) return;
            FillTeam();
        }

C#
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;
       }

C#
protected void ddlTeam_SelectedIndexChanged(object sender, EventArgs e)
        {
            List<Player> players = (List<Player>)ViewState["players"];
            if (null != players)
            {
                //var playerinTeams = players.Where(p => p.Team.Name == ddlTeam.SelectedItem.Text);
                var playerinTeams = from player in players
                                    where player.Team.Name == ddlTeam.SelectedItem.Text
                                    select player;
                ddlPlayer.DataSource = playerinTeams;
                ddlPlayer.DataBind();

            }
        }


}
 
Share this answer
 
v3
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900