Utilizando um controle DropDownList em um DataGrid

Veja neste artigo, como adicionar um controle DropDownList em um DataGrid, com atualização dos valores.

Utilizando um controle DropDownList em um DataGrid


Este artigo irá demonstrar como utilizar um controle DropDownList em um DataGrid. A parte essencial do arquivo DropDown.aspx é a seguinte:

 

              string categoryid = ddl.SelectedItem.Value;

              //pega o productid atual

              string pid = e.Item.Cell[4].Controls[0].Text;

             //chama a função de atualização do pdb

             pdb.update(pid, pname, price, categoryid);

                   

             ProductGrid.EditItemIndex=-1;

             BindProduct();                  

         }

 

         void BindCategory()

         {

              //pdb.FetchCategory() retorna um datatable

              _category = pdb.FetchCategory();       

         }

 

         protected DataTable GetCategory()

         {

              return _category;

         }

         protected int GetCategoryID(string cname)

         {

              for(int i=0;i<_category.DefaultView.Count;i++)

              {

              if (_category.DefaultView[i]["categoryname"].ToString()==cname)

                    {

                           return i;

                    }

              }

              return 0;   

         }

             #region Web Form Designer generated code

             ///

             /// Required method for Designer support - do not modify

             /// the contents of this method with the code editor.

             ///

             private void InitializeComponent()

             {   

                    this.Load += new System.EventHandler(this.Page_Load);

             }

             #endregion         

       }

}

 

As partes essenciais deste código C# são:

1. Na função Product_Edit(), você precisa chamar BindCategory() para primeiro configurar a datatable_category, em seguida configurar a propriedade EditItemIndex para o DataGrid, e por último, chamar a função BindProduct(). O controle DropDownList não irá mostra nada se você inverter essa ordem, pois uma vez que você configura a propriedade EditItemIndex, o DataGrid começa a exibir os registros, e ao mesmo tempo, o controle DropDownList acessa a função ‘GetCategory()’ para pegar a fonte de dados. Se ‘GetCategory()’ não retorna nada, então você não irá ver nada sendo exibido. Apenas lembre: antes de configurar a propriedade EditItemIndex do DataGrid, configure a fonte de dados do controle.

 

2. Na função Product_Update(), você não possui acesso ao controle DropDownList diretamente, pois ele está embutido no DataGrid. A solução é pegar o valor da seleção do controle DropDownList utilizando a função ‘FindControl()’. Esta função recebe o nome do controle como parâmetro e retorna o controle que ele encontrar, então você pode utilizar o controle retornado para pegar o valor da seleção. Apenas lembre: utilize a função FindControl() para pegar qualquer controle que você deseje achar no datagrid, como TextBox, Text Area, Label, Calendar, etc...

 

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados