Desenvolvimento - ASP. NET
Editando múltiplas linhas usando o GridView no ASP.NET 3.5
O Gridview é um dos controles que mais demandam solicitações para customização e uma delas que tenho mais recebido ultimamente é a possibilidade de permitir a edição de várias linhas ao mesmo tempo.
por Ramon DurãesO ASP.NET revolucionou o conceito de produtividade no
desenvolvimento de aplicações para web. Desde a versão 1.0 o controle Datagrid
sempre foi um dos controles mais utilizados pelas diversas possibilidades
oferecidas para manipulação de dados. Com o lançamento do GridView o controle
ganhou mais espaço ainda devido as novas possibilidades de implementação em
conjunto com o DataSource que permitiam a utilização sem uma linha de código.
O Gridview é um dos controles que mais demandam solicitações para customização
e uma delas que tenho mais recebido ultimamente é a possibilidade de permitir a
edição de várias linhas ao mesmo tempo. Nós temos várias possibilidades de
fazer essa implementações e estaremos discutindo uma delas uma delas.
A primeira coisa que precisamos prestar atenção no nosso GridView tradicional
conforme a figura 01. O Gridview possui um grande conjunto de eventos
que são disparados automaticamente de acordo com o processamento do mesmo e nos
permite controlar o comportamento modificando a aparência e interagindo com os
dados.
Figura 01 – GridView
Numa rápida avaliação você confere na figura 02 os principais eventos que
você pode utilizar.
Figura 02 – Eventos
Dentre os eventos vale comentar um bastante interessante que é o RowDataBound
que é disparado para cada linha carregada no GridView com dados oriundos de uma
fonte. Para uma visão completa de todos os eventos você pode consultar o link GridView
Events.
Para facilitar o nosso trabalho e tornar todos campos editáveis conforme a figura
03 utilizaremos uma classe desenvolvida pelo Matt Dotson"s e disponibilizada via
CodePlex para toda a
comunidade. O primeiro passo é adicionar a dll na toolbox bastando clicar na
mesma com o botão direito do mouse e escolher a opção Choose Items que após
carregar você deve selecionar o arquivo RealWorld.Grids.dll que baixou do
CodePlex. Agora arraste da toolbox o novo Grid que aparece com nome de BulkEditGridView
para o formulário. Perceba que ele já se apresenta com todos os campos no
formato de edição. Esse novo GridView herda do tradicional System.Web.UI.WebControls.GridView e já carrega a classe GridView
modificada com a funcionalidade BulkEdit.
Figura 03 – Edição de várias linhas
O próximo passo para completar nosso exemplo é criar um diagrama usando o LINQ
to SQL para que possamos manipular o nosso banco de dados de exemplo conforme a
figura 04.
Figura 04 – Diagrama LINQ to SQL
Agora crie um LinqDataSource da mesma forma que faria com o seu GridView
tradicional lembrando que durante a criação do mesmo você deve clicar em
avançado e marcar todas as opções conforme a figura 05.
Figura 05 – Configurando o LinqDataSource.
Agora você deve arrastar um simples botão para sua pagina e configurar seu BulkEditGridView1
a propriedade SaveButtonID para o mesmo ID do botão que você de arrastar. Você
pode mudar o nome desse botão para salvar e após rodar terá o resultado
apresentado na figura 06.
Figura 06 – Configurando o LinqDataSource.
Ainda sobre nosso exemplo vamos supor que você não gostou desse botão que está
fazendo esse trabalho automático e quer fazer manualmente. Não tem problema
basta fazer um simples loop e obter as informações conforme a figura 07.
Figura 07 – Loop para ler informações do GridView.
Assim ficam fácil demais. Mas não podemos deixar de agradecer ao Matt pelo
excelente trabalho em sua classe e por disponibilizado para usarmos em nosso
projeto. É importante lembrar também que você pode obter o código fonte a
qualquer momento e explorar outros exemplos disponíveis.
Referências
ASP.NET Real World Controls
http://www.codeplex.com/ASPNetRealWorldContr
Bulk Edit with GridView without xxxDataSource (SqlDataSource,
ObjectDataSource, etc.)
http://www.codeproject.com/KB/webforms/BulkEditGridView.aspx
GridView All Rows in Edit Mode
http://www.gridviewguy.com/Articles/219_GridView_All_Rows_in_Edit_Mode.aspx
Introdução ao LINQ to SQL
http://www.linhadecodigo.com.br/Artigo.aspx?id=1464