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:
<%@ Register TagPrefix="GridSelectCheckBox" Namespace="solCommon.Web.UI.DataGrid"
Assembly="ProjectAssembly" %>
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:
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.