Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: nolasco281 en 4 Junio 2015, 06:06 am



Título: Cambiar el estado de una columna usando un checkbox
Publicado por: nolasco281 en 4 Junio 2015, 06:06 am
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.
(http://3.bp.blogspot.com/-2RnNZM9wQdw/VW_LXtFzIWI/AAAAAAAAA8Q/-2qHxSMv9H0/s1600/CheckBox.png)

Tengo lo siquiente:

Si no ando mal en esta parte me cambiaria el texto de la columna segun el estado del checkbox.
Código
  1. Private Sub lvRegDePedido_ItemCheckedChanged(sender As Object, e As ListViewItemEventArgs) Handles lvRegDePedido.ItemCheckedChanged
  2. If e.Item.CheckState = Enumerations.ToggleState.On Then
  3.           'Cambia texto a entregado
  4.        End If
  5. End Sub
  6.  

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

Código
  1. Private Sub lvRegDePedido_CellFormatting(sender As Object, e As ListViewCellFormattingEventArgs) Handles lvRegDePedido.CellFormatting
  2.            If e.CellElement.Data.HeaderText = "Estado del articulo" Then
  3.                e.CellElement.Text = "Entregado"
  4.            End If
  5.    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
  1. Private Sub lvRegDePedido_CellFormatting(sender As Object, e As ListViewCellFormattingEventArgs) Handles lvRegDePedido.CellFormatting
  2. Dim item As New ListViewDataItem        
  3.    If item.CheckState = Enumerations.ToggleState.On Then
  4.            If e.CellElement.Data.HeaderText = "Estado del articulo" Then
  5.                e.CellElement.Text = "Entregado"
  6.            End If
  7.        End If
  8.    End Sub

tal vez puedan ayudarme.

Saludos.


Título: Re: Cambiar el estado de una columna usando un checkbox
Publicado por: nolasco281 en 4 Junio 2015, 09:50 am
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
  1. Private Sub lvRegDePedido_ItemCheckedChanged(sender As Object, e As ListViewItemEventArgs) Handles lvRegDePedido.ItemCheckedChanged
  2.        If e.Item.CheckState = Enumerations.ToggleState.On Then
  3.            formatoDeCelda()
  4.        End If
  5.    End Sub
  6.  

Funcion

Código
  1. Private Sub formatoDeCelda()
  2.        Try
  3.            Dim com As ListViewCellElementCreatingEventArgs
  4.            com = Nothing
  5.            If com.CellElement.Data.HeaderText = "Estado del articulo" Then
  6.                com.CellElement.Text = "Entregado"
  7.            End If
  8.        Catch ex As Exception : MsgBox(ex.Message)
  9.        End Try
  10.    End Sub
  11.  

pero me lanza el siquiente error.

(http://4.bp.blogspot.com/-igH5Tth3kRU/VXAC14oJrpI/AAAAAAAAA8g/Hkuh0niXa88/s1600/errorCheck.png)

Tal vez me puedan indicar por que.

Saludos.


Título: Re: Cambiar el estado de una columna usando un checkbox
Publicado por: nolasco281 en 6 Junio 2015, 02:39 am
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
  1. Private Sub lvRegDePedido_ItemCheckedChanged(sender As Object, e As ListViewItemEventArgs) Handles lvRegDePedido.ItemCheckedChanged
  2.        If e.Item.CheckState = CheckState.Checked Then
  3.            Dim entregado As String = "Entregado"
  4.            e.Item(3) = entregado 'Con variable
  5.        Else
  6.            e.Item(3) = "No entregado" 'Sin variable
  7.        End If
  8.    End Sub
  9.  

(http://1.bp.blogspot.com/-21SIcQehc5M/VXJAweSRDOI/AAAAAAAAA84/HGn2odLJxj4/s1600/CheckBoxsSol.png)

Saludos.