Cambiar el estado de una columna usando un checkbox

Iniciado por nolasco281, 4 Junio 2015, 06:06 AM

0 Miembros y 1 Visitante están viendo este tema.

nolasco281

Hola como esta.

Mi pregunta es la siquiente tengo un listview Control(Telerik) y he activado un checkbox y por medio de ese checkbox quiero modificar el formato de una columna del listview es decir si el estado del checkbox esta en On mostrara entregado en la columna estado del articulo si no, no entregado.

Aca una imagen los valores estan predefinidos para darme a entender mejor.


Tengo lo siquiente:

Si no ando mal en esta parte me cambiaria el texto de la columna segun el estado del checkbox.
Código (vbnet) [Seleccionar]

Private Sub lvRegDePedido_ItemCheckedChanged(sender As Object, e As ListViewItemEventArgs) Handles lvRegDePedido.ItemCheckedChanged
If e.Item.CheckState = Enumerations.ToggleState.On Then
          'Cambia texto a entregado
       End If
End Sub


Tambien tengo lo siquiente que es como se le da formato a una celda en especifico.

Código (vbnet) [Seleccionar]
Private Sub lvRegDePedido_CellFormatting(sender As Object, e As ListViewCellFormattingEventArgs) Handles lvRegDePedido.CellFormatting
           If e.CellElement.Data.HeaderText = "Estado del articulo" Then
               e.CellElement.Text = "Entregado"
           End If
   End Sub


Ahora mi pregunta es como uso el evento ItemCheckedChanged y CellFormatting para que por medio del cambio del checkedChange se le de formato a la celda.

Ya prove varias cosas como lo siquiente pero me lanza un error.

Código (vbnet) [Seleccionar]
Private Sub lvRegDePedido_CellFormatting(sender As Object, e As ListViewCellFormattingEventArgs) Handles lvRegDePedido.CellFormatting
Dim item As New ListViewDataItem        
   If item.CheckState = Enumerations.ToggleState.On Then
           If e.CellElement.Data.HeaderText = "Estado del articulo" Then
               e.CellElement.Text = "Entregado"
           End If
       End If
   End Sub


tal vez puedan ayudarme.

Saludos.
Lo que se puede imaginar... se puede programar.

nolasco281

#1
Hola.

Creo que la logica ya la tengo y lo que se me ocurrio fue llamar un evento dentro de otro es decir la del cellFormatting en el ItemCheck, cree una funcion para llamarla en el evento que la necesite.

Código (vbnet) [Seleccionar]

Private Sub lvRegDePedido_ItemCheckedChanged(sender As Object, e As ListViewItemEventArgs) Handles lvRegDePedido.ItemCheckedChanged
       If e.Item.CheckState = Enumerations.ToggleState.On Then
           formatoDeCelda()
       End If
   End Sub


Funcion

Código (vbnet) [Seleccionar]

Private Sub formatoDeCelda()
       Try
           Dim com As ListViewCellElementCreatingEventArgs
           com = Nothing
           If com.CellElement.Data.HeaderText = "Estado del articulo" Then
               com.CellElement.Text = "Entregado"
           End If
       Catch ex As Exception : MsgBox(ex.Message)
       End Try
   End Sub


pero me lanza el siquiente error.



Tal vez me puedan indicar por que.

Saludos.
Lo que se puede imaginar... se puede programar.

nolasco281

#2
Hola como estan.

Despues de casi un dia lo logre y paso a compartir la solucion tan facil.

Con esto pueden hacer cualquier cosa con el checkbox y la manipulacion de una celda en especial.
Desde hacer una consulta a una BD por medio de un dato especifico del listView o varios datos del listview etc..

Código (vbnet) [Seleccionar]

Private Sub lvRegDePedido_ItemCheckedChanged(sender As Object, e As ListViewItemEventArgs) Handles lvRegDePedido.ItemCheckedChanged
       If e.Item.CheckState = CheckState.Checked Then
           Dim entregado As String = "Entregado"
           e.Item(3) = entregado 'Con variable
       Else
           e.Item(3) = "No entregado" 'Sin variable
       End If
   End Sub




Saludos.
Lo que se puede imaginar... se puede programar.