actualizar listview

19/10/2006 - 11:24 por Vmrincon | Informe spam
Hola amigos:

Me sucede una cosa extrañísima:

Tengo un listview que deseo ordenar de un modo algo especial. Por
ello poseo dos funciones que me lo ordenan. Hago la siguiente llamada:

Ordenar1(listv)
Ordenar2(listv)
Me.ShowDialog()

Ante esto, resulta que el ShowDialog me muestra el listview sólo
afectado por la segunda ordenación!!!

En cambio si realizo

Ordenar1(listv)
Me.ShowDialog()
Ordenar2(listv)
Me.ShowDialog()

Tras la segunda llamada al ShowDialog, el resultado es perfecto y
los elementos están ordenados conforme a ambas ordenaciones. Intuyo
que dentro del ShowDialog debe ocurrir algun evento o algo que me
actualice el listview y que yo estoy echando en falta en el primer caso
expuesto. ¿Qué puede ser? Les agradecería enormemente su ayuda.

Muchas gracias!!!

Preguntas similare

Leer las respuestas

#1 Maria Agustina Paz
19/10/2006 - 11:49 | Informe spam
no das suficiente informacion como para evaluar mas precisamente.

...Pero asi como esta, parece lo mas logico suponer que el Ordenar2 te
desordena lo que ordenaste en Ordenar1, y que no estas razonando bien el uso
de esas funciones.


De todos modos te comento que los ListView tienen previsto un metodo para
ordenaciones, que tiene que ver con la propiedad ListViewItemSorter.
Es un poco complejo el concepto, no te lo sabria explicar. Lo use solo una
vez en una ordenacion muy simple y anda bien

saludos



"Vmrincon" wrote:

Hola amigos:

Me sucede una cosa extrañísima:

Tengo un listview que deseo ordenar de un modo algo especial. Por
ello poseo dos funciones que me lo ordenan. Hago la siguiente llamada:

Ordenar1(listv)
Ordenar2(listv)
Me.ShowDialog()

Ante esto, resulta que el ShowDialog me muestra el listview sólo
afectado por la segunda ordenación!!!

En cambio si realizo

Ordenar1(listv)
Me.ShowDialog()
Ordenar2(listv)
Me.ShowDialog()

Tras la segunda llamada al ShowDialog, el resultado es perfecto y
los elementos están ordenados conforme a ambas ordenaciones. Intuyo
que dentro del ShowDialog debe ocurrir algun evento o algo que me
actualice el listview y que yo estoy echando en falta en el primer caso
expuesto. ¿Qué puede ser? Les agradecería enormemente su ayuda.

Muchas gracias!!!


Respuesta Responder a este mensaje
#2 Vmrincon
19/10/2006 - 11:58 | Informe spam
Hola Maria Agustina:

Gracias por tu contestación. No obstante te comento:

- Las funciones Ordenar1 y Ordenar2 hacen lo que tienen que hacer, de
hecho al hacer la segunda llamada al ShowDialog funciona bien, pero
claro, no quiero mostrar dos veces el mismo formulario.
- En efecto, conozco la propiedad listviewItemSorter, de hecho la
empleo dentro de las funciones ordenar1 y ordenar2, simplemente el
patrón de ordenamiento lo implemento a través de la interfaz ICompare
en función de dos criterios diversos (de ahí la existencia de dos
funciones que ordenan, y no una)

Un saludo y muchas gracias, pero lamentablemente sigo donde estoy...


Maria Agustina Paz wrote:
no das suficiente informacion como para evaluar mas precisamente.

...Pero asi como esta, parece lo mas logico suponer que el Ordenar2 te
desordena lo que ordenaste en Ordenar1, y que no estas razonando bien el uso
de esas funciones.


De todos modos te comento que los ListView tienen previsto un metodo para
ordenaciones, que tiene que ver con la propiedad ListViewItemSorter.
Es un poco complejo el concepto, no te lo sabria explicar. Lo use solo una
vez en una ordenacion muy simple y anda bien

saludos



"Vmrincon" wrote:

> Hola amigos:
>
> Me sucede una cosa extrañísima:
>
> Tengo un listview que deseo ordenar de un modo algo especial. Por
> ello poseo dos funciones que me lo ordenan. Hago la siguiente llamada:
>
> Ordenar1(listv)
> Ordenar2(listv)
> Me.ShowDialog()
>
> Ante esto, resulta que el ShowDialog me muestra el listview sólo
> afectado por la segunda ordenación!!!
>
> En cambio si realizo
>
> Ordenar1(listv)
> Me.ShowDialog()
> Ordenar2(listv)
> Me.ShowDialog()
>
> Tras la segunda llamada al ShowDialog, el resultado es perfecto y
> los elementos están ordenados conforme a ambas ordenaciones. Intuyo
> que dentro del ShowDialog debe ocurrir algun evento o algo que me
> actualice el listview y que yo estoy echando en falta en el primer caso
> expuesto. ¿Qué puede ser? Les agradecería enormemente su ayuda.
>
> Muchas gracias!!!
>
>
Respuesta Responder a este mensaje
#3 Maria Agustina Paz
19/10/2006 - 12:03 | Informe spam
ah perdon, ya entiendo el problema.

Tendrias que postear las funciones de ordenamiento a ver que es lo que
tienen adentro






"Vmrincon" wrote:

Hola amigos:

Me sucede una cosa extrañísima:

Tengo un listview que deseo ordenar de un modo algo especial. Por
ello poseo dos funciones que me lo ordenan. Hago la siguiente llamada:

Ordenar1(listv)
Ordenar2(listv)
Me.ShowDialog()

Ante esto, resulta que el ShowDialog me muestra el listview sólo
afectado por la segunda ordenación!!!

En cambio si realizo

Ordenar1(listv)
Me.ShowDialog()
Ordenar2(listv)
Me.ShowDialog()

Tras la segunda llamada al ShowDialog, el resultado es perfecto y
los elementos están ordenados conforme a ambas ordenaciones. Intuyo
que dentro del ShowDialog debe ocurrir algun evento o algo que me
actualice el listview y que yo estoy echando en falta en el primer caso
expuesto. ¿Qué puede ser? Les agradecería enormemente su ayuda.

Muchas gracias!!!


Respuesta Responder a este mensaje
#4 Vmrincon
19/10/2006 - 12:07 | Informe spam
Ahi van...

Ordenar1==>
Public Function Compare(ByVal x As Object, ByVal y As Object) As
Integer _
Implements IComparer.Compare
Return [String].Compare(CType(x,
ListViewItem).SubItems(col).Text, CType(y,
ListViewItem).SubItems(col).Text)
End Function

Ordenar2==>
Public Function Compare(ByVal x As Object, ByVal y As Object) As
Integer _
Implements IComparer.Compare
Dim i As Integer
Return [String].Compare(CType(y,
ListViewItem).Checked.ToString, CType(x,
ListViewItem).Checked.ToString)
End Function

Maria Agustina Paz wrote:
ah perdon, ya entiendo el problema.

Tendrias que postear las funciones de ordenamiento a ver que es lo que
tienen adentro






"Vmrincon" wrote:

> Hola amigos:
>
> Me sucede una cosa extrañísima:
>
> Tengo un listview que deseo ordenar de un modo algo especial. Por
> ello poseo dos funciones que me lo ordenan. Hago la siguiente llamada:
>
> Ordenar1(listv)
> Ordenar2(listv)
> Me.ShowDialog()
>
> Ante esto, resulta que el ShowDialog me muestra el listview sólo
> afectado por la segunda ordenación!!!
>
> En cambio si realizo
>
> Ordenar1(listv)
> Me.ShowDialog()
> Ordenar2(listv)
> Me.ShowDialog()
>
> Tras la segunda llamada al ShowDialog, el resultado es perfecto y
> los elementos están ordenados conforme a ambas ordenaciones. Intuyo
> que dentro del ShowDialog debe ocurrir algun evento o algo que me
> actualice el listview y que yo estoy echando en falta en el primer caso
> expuesto. ¿Qué puede ser? Les agradecería enormemente su ayuda.
>
> Muchas gracias!!!
>
>
Respuesta Responder a este mensaje
#5 Maria Agustina Paz
19/10/2006 - 12:46 | Informe spam
bueno, perdon, no domino el tema, asi que es posible que te este perjudicando
en vez de intentar ayudarte.

¿Pero, como es el ordenamiento que quieres, por el texto de una columna y
dentro de cada grupo, si estan chequeados o no?


¿No funcionaria reemplazando la logica anterior por una sola logica como la
siguiente, en un solo compare?

Return IIf(CType(x, ListViewItem).SubItems(col).Text = CType(y,
ListViewItem).SubItems(col).Text, [String].Compare(CType(y,
ListViewItem).Checked.ToString, CType(x, ListViewItem).Checked.ToString),
[String].Compare(CType(x, ListViewItem).SubItems(col).Text, CType(y,
ListViewItem).SubItems(col).Text))


mil disculpas si en vez de ayudar, confundo


saludos



"Vmrincon" wrote:

Ahi van...

Ordenar1==>
Public Function Compare(ByVal x As Object, ByVal y As Object) As
Integer _
Implements IComparer.Compare
Return [String].Compare(CType(x,
ListViewItem).SubItems(col).Text, CType(y,
ListViewItem).SubItems(col).Text)
End Function

Ordenar2==>
Public Function Compare(ByVal x As Object, ByVal y As Object) As
Integer _
Implements IComparer.Compare
Dim i As Integer
Return [String].Compare(CType(y,
ListViewItem).Checked.ToString, CType(x,
ListViewItem).Checked.ToString)
End Function
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida