Fazer um GridView encadeado (Grid Pai -> Grid Filho)

05:45 , , 1 Comments

Um pequeno exemplo de como montar um GridView encadeado. Isso é muito útil quando é necessário agrupar valores por suas categorias.


    
        
            
                
                
                <%-- No dia a dia será mais comum usar uma função no DataSource que retorne os dados da linha atual assim: <%# GetAlimentosById(int.Parse(Eval("IdCategoriaAlimentos").ToString())) %>  --%>
                
                    
                        
                            
                                
                            
                        
                    
                
            
        
    


protected void Page_Load(object sender, EventArgs e)
{
    //Criando uma carga de dados inicial para teste. Assim não precisamos envolver pesquisa à banco no exemplo
    List<CagoriaAlimento> categoriasAlimento = new List<CagoriaAlimento>{
         new CagoriaAlimento(){
            Nome = "Lanches",
            Alimentos = new List<Alimento>
            {
                new Alimento(){
                    Nome = "X-Tudo"
                },
                new Alimento(){
                    Nome = "X-Bacon"
                },
                new Alimento(){
                    Nome = "X-Egg"
                }
            }
        },
        new CagoriaAlimento(){
            Nome = "Naturebas",
            Alimentos = new List<Alimento>
            {
                new Alimento(){
                    Nome = "Salada de alfaçe"
                },
                new Alimento(){
                    Nome = "Bife de soja" //eca
                }
            }
        }
    };

    //Populando o grid
    gvwCategoriasDeAlimentos.DataSource = categoriasAlimento;
    gvwCategoriasDeAlimentos.DataBind();
}



class CagoriaAlimento
{
    public String Nome { get; set; }
    public List<Alimento> Alimentos { get; set; }
}

class Alimento
{
    public String Nome { get; set; }
}

E eis o resultado:

Só falta um pouco de css ;-) .

1 comentários: