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ães



O 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.

fig01.png
Figura 01 – GridView

Numa rápida avaliação você confere na figura 02 os principais eventos que você pode utilizar.

fig02.png
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.

fig03.png
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.


fig04.png
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.

fig05.png
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.

fig06.png
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.

fig07.png
 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

Ramon Durães

Ramon Durães - Especialista em desenvolvimento de software e Microsoft Most Valuable Professional (MVP) em Visual Studio Team System. Realiza treinamentos de .NET Framework em empresas, consultoria em arquitetura de software e implantação de Visual Studio Team System. Palestrante nos principais eventos da Microsoft no Brasil (Tech-Ed 2005, Tech-Ed 2006, Tech-Ed 2007, Tech-Ed 2008, Tech-ED 2009), Microsoft Innovation Days 2007 (Salvador, Brasília, Recife, Goiânia, Natal, Maringá), Microsoft Innovation Days 2009 (Salvador) , Campus Party Brasil 2009 e eventos regionais relacionados a grupos de usuários e universidades. Conhecido autor de artigos para os principais portais de conteúdo e autor de 10 publicações eletrônicas em CD (Video-Aula) pela editora Linha de Código além dos livros "Desenvolvendo para web usando o Visual Studio 2008" e "Gerenciando projetos de software usando Visual Studio Team System" pela editora Brasport. Pode ser encontrado em seu blog http://www.ramonduraes.net e @ramonduraes no Twitter.