Selecionando Linhas Múltiplas em um DataGrid CheckBox

 

A seleção de linhas múltiplas em um DataGrid web é um requisito comum e definitivamente o modo mais elegante de a implementarmos é via CheckBox(s). Uma coluna CheckBox deve ser acompanhada é claro com as funcionalidades CheckAll / UnCheckAll.

Como usar

Faça o download do arquivo .cs e o acrescente a seu projeto (se o seu projeto estiver em outra linguagem, crie um novo projeto de biblioteca e acrescente o arquivo .cs ao mesmo, compile a biblioteca e anexe a .dll resultante como uma referência).

 

Registre um TagPrefix na sua página saspx para a nova coluna como segue:

 

img 

Isto é, apenas um pedaço do código, poderá registrar qualquer TagPrefix em sua página. Se tiver que mudar o namespace no arquivo .cs, substitua o atributo Namespace adequadamente. O atributo Assembly deve ser seu project/library assembly.

O próximo passo lógico é incluir a coluna no DataGrid. Você pode incluir a coluna em qualquer local. O código a seguir, adiciona a coluna na posição 0, i.e. a primeira coluna:

 

img

 

Finalmente, usamos o método estático exposto na classe DGCheckBoxColumn, para registrar o lado cliente JavaScripts para a funcionalidade CheckAll/UncheckAll. No método Page_Load da página aspx, adicione a seguinte linha:

 

DGCheckBoxColumn.RegisterClientCheckEvents(this,"Form1");

 

Você deverá substituir "Form1" com o nome do formulário no qual o seu DataGrid reside. O DataGrid está agora pronto. Você pode obter os índices ou os DataKeys selecionados chamando um das propriedades expostas, i.e. DGCheckBoxColumn.SelectedIndexes e DGCheckBoxColumn.SelectedDataKeys. Digamos, que o handler do evento button click faz o seguinte:

 

// sabendo que a coluna do grid eh a primeira...

DGCheckBoxColumn dgchkbxCol = (DGCheckBoxColumn)myGrid.Columns[0];

 

// percorrer a selecao

foreach (int i in dgchkbxCol.SelectedIndexes)

{

   // fazer alguma coisa...

}

 

Você pode usar/modificar livremente o arquivo fornecido para o seu próprio uso, contanto que mantenha os reconhecimentos apresentados acima. Obrigado e boa sorte.

 

img