datagrid vs listview

26/06/2005 - 12:08 por Sonia | Informe spam
hola!
en mi aplicacion uso muchos datagrids de gran tamaño(la bd tiene muchos
registros) y me han aconsejado q seria mas eficiente si usara listview en
vez de tanto datagrid. nunca he usado listview y antes de cambiar la
aplciacion me gustaria preguntar si sabeis la diferencia entre ambos, q me
aconsejais y donde puedo ver ejemplos de listview. uno de los priencipales
problemas del datagrid es q en algunos formularios q tengo 3 o 4 me tarda
demasiado en cargar los datos. no se si esto mejorara usando listview.
conoceis alguna forma mas eficiente de hacerlo?

Preguntas similare

Leer las respuestas

#11 Tristan
27/06/2005 - 21:46 | Informe spam
Sonia, antes de que cambies tu código, creo que deberías pensar una cosa.
Veo que utilizas un dataview en el método Carga. ¿Para qué?. Lo digo por que
no me queda claro si llenas el dataset con muchas filas y luego seleccionas
a través del dataview, o por el contrario el "WHERE id_col ..." se encarga
de seleccionar solo las filas que quieres. ¿Ese where produce solo diez
filas?

Por otro lado, ¿estás segura de que tarda muy poco en el Fill de carga?.
¿Entonces en qué tarda, en la asignación del datasource al datagrid? ¿Los
cuatro datagrid muestran las mismas filas?

Es que no se, me resulta muy extraño que te tarde mucho menos en el equipo
que tiene la BD, que en el que no la tiene. Si es así, no veo como puede ser
que el tiempo se pierda en generar el datagrid. Ha de ser forzosamente en la
carga de los datos. Yo creo que o bien el número de filas que cargas en el
dataset es muy grande, o bien necesites utilizar índices, o bien incluso
utilizar un gestor de bases de datos en red. Realmente para el caso que
describes, tablas de muchas filas accedidas en red, las bases de datos del
tipo de access son muy poco eficientes.

Juan Carlos Badiola
MVP - C#
#12 Sonia
28/06/2005 - 09:22 | Informe spam
la verdad es q la seleccion la restriccion de las filas la hago simplemente
con el where de la consulta. el where no siempre produce el mismo numero de
filas, depende del codigo q le ponga en un textbox pero normalmente estan
entre ninguna y 10-15 como max.

crees entonces q puedo kitar lo del dataview y q no merece la pena pasarlo a
listview?
la verdad es q he cambiado una cosa de leer los datos con un registro y
ponerlos en una serie de textbox y parece q va mas rapido , pero aun asi en
formulario q tengo lo mismo , sale la informacion inmediata en mi pc, y en
este q tengo los 4 datagrids tarda unos segundos. 3 o 4 q como siempre se
agrandaran al ejecutar la aplicacion en el pc q no tenga la bd. esto es lo q
keria emjorar.
keria probar la diferencia usando listview con datareader pero keria hacerlo
con una funcion publica tipo la de carga del datagrid, pero todas las q
encuentro usan el dataset y no el datareader.



"Tristan" escribió en el mensaje
news:
Mostrar la cita
que
Mostrar la cita
seleccionas
Mostrar la cita
ser
Mostrar la cita
la
Mostrar la cita
#13 Bernardo Campos
28/06/2005 - 20:36 | Informe spam
Sonia, en realidad solo es un simple ejemplo que te puse para cargar datos,
tu verás cómo lo puedes implementar mejorderrepente se me ocurre algo
asi, no lo he probado...:

private sub CargarListView (list as listView, strTabla as string)
dim item as new listViewItem
sql = "select * from " & strTabla
'cargas tu datareader
while dataReader.read
for i to datareader.FieldCount
item = list.Items.Add(dataReader.item(dataReader.GetName(i)))
item.SubItems.Add(dataReader.item(dataReader.GetName(i+1)))
i = i + 2
next
i = 1
end while
end sub

Sta Cruz, Bolivia

"Sonia" wrote in message
news:OUeQ$
gracias x la funcion. ahora la pruebo. supongo q tendre en vez de ir col por
col tendre q crearme una variable para q funcione sea el num de col q sea.
ahora lo pronare, ya q lo q kiero es q se rellenen varios listview de
diferentes tamaños y diferentes tablas al abrir el form.
por cierto, q parametros le paso para llamarla??
gracias!
"Bernardo Campos" escribió en el mensaje
news:
Te respondo entre lineasSaludos,



Sta Cruz, Bolivia

"Sonia" wrote in message
news:
Mostrar la cita
(y
Mostrar la cita
varios
Mostrar la cita
en
Mostrar la cita
refieres q
Mostrar la cita
-
No, me refiero a que los cambios lo hagas directo en el listview sin
llamar a otro formulario, eso no se puede hacer.
Pero como dices que tu llamas a otro form. que carga los datos con el dato
de la ultima columna que tienes en el listView,
(que es tu clave), eso sí se puede.
-
Mostrar la cita
poner
Mostrar la cita
un
Mostrar la cita
como
Mostrar la cita
Ok, me queda claro, pensé que no utilizabas proc. almac.
___________________________________

Mostrar la cita
kiero
Mostrar la cita
procedimiento
Mostrar la cita
pero
Mostrar la cita
kiero
Mostrar la cita
Acá te pongo un pequeño ejemplo para cargar un listView

Dim item As New ListViewItem
lstProductos.FullRowSelect = True
lstProductos.View = view.details

'Registro 1
item = lstProductos.Items.Add(dataReader.item("col1"))
item.SubItems.Add(dataReader.item("col2"))
item.SubItems.Add(dataReader.item("col3"))

'Registro 2
item = lstProductos.Items.Add(dataReader.item("col1"))
item.SubItems.Add(dataReader.item("col2"))

-


Mostrar la cita
los
Mostrar la cita
quieres
Mostrar la cita
el
Mostrar la cita
la
Mostrar la cita
de
Mostrar la cita
ya
Mostrar la cita
recordar
Mostrar la cita
DataReader
Mostrar la cita
implica
Mostrar la cita
movernos
Mostrar la cita
habria
Mostrar la cita
los
Mostrar la cita
tener
Mostrar la cita
volvernos a
Mostrar la cita
datos
Mostrar la cita
vez
Mostrar la cita
mas
Mostrar la cita
mas.
Mostrar la cita
de
Mostrar la cita
cambiar la
Mostrar la cita
me
Mostrar la cita
#14 Juan Pedro Gonzalez
29/06/2005 - 22:29 | Informe spam
Hola Bernardo,

Aunque no he probado dicha funcion no sería mas bien:

private sub CargarListView (list as listView, strTabla as string)
dim item as new listViewItem
Dim i As Integer

sql = "select * from " & strTabla
'cargas tu datareader
while dataReader.read
item = list.Items.Add(dataReader.item(CStr(dataReader.Item(0))))
i = 1
for i to datareader.FieldCount
If (Not dataReader.IsDBNULL(i)) Then
item.SubItems.Add(dataReader.item(dataReader.Item(i)))
Else
item.SubItems.Add("")
End If
i = i + 1
next
i = 1
end while
end sub

Donde lo mas importante sería sacar el list.Item.Add fuera del bucle for
para permitir que se inserten todos los sub elementos. Personalemente no uso
una función asi porque en muchos casos me gusta guardar la clave primaria en
el Tag (Ya sea un unico campo de la base de datos o varios campos), por lo
que suelo hacerlo de una forma mas manual llendo Item por Item).

Saludos,

Juan Pedro González



"Bernardo Campos" escribió en el mensaje
news:emIPi#
Mostrar la cita
datos,
Mostrar la cita
por
Mostrar la cita
fila
Mostrar la cita
formulario
Mostrar la cita
al
Mostrar la cita
y
Mostrar la cita
actualizo.
Mostrar la cita
dato
Mostrar la cita
veo
Mostrar la cita
en
Mostrar la cita
traves
Mostrar la cita
DataReader.
Mostrar la cita
La
Mostrar la cita
del
Mostrar la cita
cada
Mostrar la cita
poco
Mostrar la cita
las
Mostrar la cita
poco
Mostrar la cita
ser
Mostrar la cita
tiene
Mostrar la cita
4
Mostrar la cita
Ads by Google
Search Busqueda sugerida