Este ejemplo funciona como cualquier interfaz de correo electrónico, tipo Hotmail.
La idea es que cuentas con un GridView
que muestra muchos registros. El usuario tiene la opción de seleccionar uno o varios de esos registros marcando un CheckBox
que aparece en cada renglón. Después oprime un botón etiquetado con algún texto como “Eliminar los registros marcados” y todos los registros que marcó se borran.
Se le ahorra tiempo al usuario al permitirle eliminar varios registros de un solo paso.
Primero necesitas añadir a tu GridView
un CheckBox
para cada renglón:
- <asp:GridView ID="GVComparativos" runat="server" AutoGenerateColumns="False"
- DataSourceID="ODSComparativos" AllowPaging="True" CellPadding="5"
- GridLines="None" PageSize="30" DataKeyNames="identificadorCoti">
- <Columns>
- <asp:BoundField DataField="PersNombre" HeaderText="Nombre"
- SortExpression="PersNombre" ReadOnly="true" />
- <asp:BoundField DataField="PersEmail" HeaderText="E-mail"
- SortExpression="PersEmail" ReadOnly="true" />
- <asp:TemplateField HeaderText="Eliminar">
- <ItemTemplate>
- <asp:CheckBox ID="chkEliminar" runat="server" />
- </ItemTemplate>
- </asp:TemplateField>
- <asp:CommandField ShowEditButton="True" EditText="Editar" CancelText="Cancelar" UpdateText="Aceptar" />
- </Columns>
- </asp:GridView>
- <br/>
- <asp:LinkButton ID="EliminarMarcados" runat="server" CausesValidation="False"> Eliminar los registros seleccionados</asp:LinkButton>
Toma nota del TemplateField
que contiene un CheckBox
llamado chkEliminar
. Lo usaremos en el siguiente código, que va en el evento Click
del LinkButton
llamado EliminarMarcados
:
- Protected Sub EliminarMarcados_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles EliminarMarcados.Click
- Dim ListaDeIdsMarcados As String = ""
- 'Recorrer los renglones del GridView
- Dim i As Integer
- For i = 0 To GVComparativos.Rows.Count - 1
- Dim ElCheckBox As CheckBox = CType(GVComparativos.Rows(i).FindControl("chkEliminar"), CheckBox)
- If ElCheckBox.Checked Then
- 'Aqui encontramos cada CheckBox marcado
- 'En este ejemplo los pongo en un string y los despliego
- 'Pero en un caso de la vida real, llamarias a una funcion que los
- 'eliminaria utilizando el ID, que se guarda en DataKeys
- ListaDeIdsMarcados = ListaDeIdsMarcados & GVComparativos.DataKeys(i).Value & "<br/>"
- End If
- Next
- Response.Write(ListaDeIdsMarcados)
- End Sub
Listo, parece algo muy avanzado pero se logra de una forma relativamente sencilla.