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

#6 Sonia
27/06/2005 - 09:28 | Informe spam
hola
exactamente tienen muchas filas pero no las muestro todas. solo las q
pertenecen a un codigo q solo seran por las 10 filas. lo q si q es muy
grande es la bd. no se si tendra algo q ver.
de lo q me preguntabas, te dire q en el form q mas tarda solo relleno una
serie de textbox (registro) y 4 datagrid. el registro sale en seguida y lo q
tardan son los datagrids. te pongo el codigo de uno a ver si ves algo
ineficiente, ya q me dijiste q seria mas facil decirme lo q pasa si vieras
el codigo.

'boton buscar

Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click

If Clave.Text <> "" Then

cole = Clave.Text

leer_registro(cole)

'relleno tb 2 campos de otras tablas mediante un listbox

mysql = "SELECT NIF FROM(CLIENTESSP) WHERE CC= '" & cole & "';"

Llenar_Listbox(mysql, CadenaConexion, nifs)

mysql = "SELECT distinct AUX FROM(PEDIDOS) WHERE COLEGIO= '" & cole & "';"

Llenar_Listbox(mysql, CadenaConexion, cuenta2)

'ahora van los datagrids. Pongo solo 1 pero hay 4

Dim nuevo As cargadatagrid 'nombre del modulo donde esta la funcion carga

mysql = "select NOMBRE &' '& APELLIDOS,CARGO,HORARIO,EMAIL,ID"

mysql = mysql & " FROM (Contactos) WHERE ID_COL='" & klave & "'ORDER BY
Contactos.ID DESC"

nuevo.Carga(mysql, "Contactos", DataGrid1)

DataGrid1.ReadOnly = True

End If

'las variables y llamadas q uso en lso datagrids estan declaradas en un
modulo 'cargadatagrid' de forma general. Las uso siempre:

Public Overloads Shared Sub Carga(ByVal sql As String, ByVal tabla As
String, ByVal dataG As DataGrid, Optional ByVal titulo As String = "")

Try

Dim DataAdapter As OleDbDataAdapter = New OleDbDataAdapter(sql,
CadenaConexion)

Dim MiData As DataSet = New DataSet

Dim datav As New DataView

DataAdapter.Fill(MiData, tabla)

datav.Table = MiData.Tables(tabla)

dataG.DataSource = datav

If titulo <> "" Then dataG.CaptionText = titulo

Catch Errores As Exception

MsgBox(Errores.ToString)

End Try

vermuestras.Visible = True

vercoment.Visible = True

vermuestraspedi.Visible = True

DataGrid2.Visible = False

DataGrid3.Visible = False

DataGrid4.Visible = False

End Sub



Private Sub leer_registro(ByVal colegio As String)

Dim x As Int16

Dim tb As System.Windows.Forms.Control

ReDim registro(11)

ReDim reg(0)

mysql = "SELECT NOMBR, DIREC, LOCALIDAD, PROVI, TELEF, EMAIL, NUFAX,
CLASE,DPOST,AULAS_CURSO,PREFERENTE, CONGREGACION "

mysql = mysql & " FROM(CENTROS1) WHERE KLAVE = '" & colegio & "';"

Dim myReader As OleDbDataReader

Dim myConnection As New OleDbConnection(CadenaConexion)

Dim myCommand As New OleDbCommand(mysql, myConnection)

myCommand.Connection.Open()

myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)

While myReader.Read()

For x = 0 To 11

registro(x) = myReader.Item(x).ToString

Next

End While

myReader.Close() : myConnection.Close() : myCommand.Dispose()

For Each tb In Me.Controls

If TypeOf tb Is TextBox Then

If tb.TabIndex <= 11 Then

tb.Text = registro(tb.TabIndex)

End If

End If

Next


End Sub



"Tristan" escribió en el mensaje
news:
Sonia, no me había fijado en que dices que tus tablas tienen muchas filas.
En ese caso, no te recomiendo mostrarlos todos. No es una buena idea


mostrar
a la vez un número demasiado grande de registros utilizando ado.net.


Tendrás
que hacer lo que hacen siempre las aplicaciones web, encontrar alguna


forma
de paginar los resultados, o de seleccionar los registros según criterios.

Si no puedes hacer nada de eso, tal vez te interese utilizar ado, en lugar
de ado.net. Ado incluye cursores conectados, que probablemente sirvan


mejor
para mostrar un gran número de filas. Pero te recomiendo que antes revises
las posibilidades de paginar o filtrar tus datos.

Juan Carlos Badiola
MVP - C#


Respuesta Responder a este mensaje
#7 Juan Pedro Gonzalez
27/06/2005 - 12:17 | Informe spam
Hola Sonia,

La mejora de rendimiento entre un DataGrid y un ListView radica en la forma
de acceder a los datos. Normalmente el DataGrid se carga a traves de un
DataSet mientras que el ListView lo cargas mediante un DataReader.

El DataReader es mas rápido que el DataSet. Esto se hace eviente ya que el
DataSet se carga (de forma interna) a traves de un DataReader y
posteriormente este DataSet se asocia al DataGrid... Al emplear directamente
el DataReader ganamos algo de "velocidad". Tambien debemos recordar que el
DataSet almacena todas las filas en memoria mientras que el DataReader solo
almacena la fila a la cual esta apuntando en ese momento. Esto implica que
empleamos menos recursos del sistema y por lo tanto tenemos mas recursos
disponibles a medida que introducimos los datos en el ListView. La contra
partida es que el DataReader no es "navegable" (No podemos movernos por sus
registros libremente, y simplemente podemos avanzar)... Bueno habria mas
detalles como que el DataSet lo podemos pasar en funciones pero los
resultados de un DataReader no, y que para el DataReader debemos tener
conexion si deseamos mostrarlos, mientras que en el DataSet al almacenarlos
en memoria los podriamos volver a mostrar sin necesidad de volvernos a
conectar a la base de datos... etc...

Si empleas el DataReader para cargar un ListView no te olvides del
"listView1.BeginUpdate" antes de realizar el bucle que carga los datos y el
"EndUpdate" despues... Esto evita que el listview se redibuje cada vez que
incluimos un elemento nuevo y por lo tanto nos proporciona un poco mas de
velocidad.

Espero haberte aclarado un poco tu duda, sino busca en google las
diferencias entre DataSets y DataReaders y te lo aclarara un poco mas.

Saludos,

Juan Pedro González


P.D. Personalmente, por defecto suelo emplear DataReaders a no ser de que un
DataSet me presente una clara ventaja.


"Sonia" escribió en el mensaje
news:
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?



Respuesta Responder a este mensaje
#8 Sonia
27/06/2005 - 18:47 | Informe spam
hola
gracias por la alcaracion.
voy a intentar hacerlo con datareader usando listview, pero solo veo
ejemplos de llenar_listview usando datasets. sabes donde puedo ver el
ejemplo de llenar el listview usando datareader?
gracias

"Juan Pedro Gonzalez" escribió en el mensaje
news:#
Hola Sonia,

La mejora de rendimiento entre un DataGrid y un ListView radica en la


forma
de acceder a los datos. Normalmente el DataGrid se carga a traves de un
DataSet mientras que el ListView lo cargas mediante un DataReader.

El DataReader es mas rápido que el DataSet. Esto se hace eviente ya que el
DataSet se carga (de forma interna) a traves de un DataReader y
posteriormente este DataSet se asocia al DataGrid... Al emplear


directamente
el DataReader ganamos algo de "velocidad". Tambien debemos recordar que el
DataSet almacena todas las filas en memoria mientras que el DataReader


solo
almacena la fila a la cual esta apuntando en ese momento. Esto implica que
empleamos menos recursos del sistema y por lo tanto tenemos mas recursos
disponibles a medida que introducimos los datos en el ListView. La contra
partida es que el DataReader no es "navegable" (No podemos movernos por


sus
registros libremente, y simplemente podemos avanzar)... Bueno habria mas
detalles como que el DataSet lo podemos pasar en funciones pero los
resultados de un DataReader no, y que para el DataReader debemos tener
conexion si deseamos mostrarlos, mientras que en el DataSet al


almacenarlos
en memoria los podriamos volver a mostrar sin necesidad de volvernos a
conectar a la base de datos... etc...

Si empleas el DataReader para cargar un ListView no te olvides del
"listView1.BeginUpdate" antes de realizar el bucle que carga los datos y


el
"EndUpdate" despues... Esto evita que el listview se redibuje cada vez que
incluimos un elemento nuevo y por lo tanto nos proporciona un poco mas de
velocidad.

Espero haberte aclarado un poco tu duda, sino busca en google las
diferencias entre DataSets y DataReaders y te lo aclarara un poco mas.

Saludos,

Juan Pedro González


P.D. Personalmente, por defecto suelo emplear DataReaders a no ser de que


un
DataSet me presente una clara ventaja.


"Sonia" escribió en el mensaje
news:
> 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?
>
>
>



Respuesta Responder a este mensaje
#9 Bernardo Campos
27/06/2005 - 19:56 | Informe spam
Sonia, dos cosas quería comentar:

1. Quizas si pones tu consultas con proced. almacenados podria mejorar.
2. Con el listView si muestras varias columnas, no puedes editar los
datos directamente en todas las columnas, solo podrás hacerlo en la primera
columna, en cambio sí lo puedes hacer con un grid. Claro esto si quieres
editar los datos, pero si es solo para mostrar






Sta Cruz, Bolivia

"Sonia" wrote in message
news:
hola
gracias por la alcaracion.
voy a intentar hacerlo con datareader usando listview, pero solo veo
ejemplos de llenar_listview usando datasets. sabes donde puedo ver el
ejemplo de llenar el listview usando datareader?
gracias

"Juan Pedro Gonzalez" escribió en el mensaje
news:#
> Hola Sonia,
>
> La mejora de rendimiento entre un DataGrid y un ListView radica en la
forma
> de acceder a los datos. Normalmente el DataGrid se carga a traves de un
> DataSet mientras que el ListView lo cargas mediante un DataReader.
>
> El DataReader es mas rápido que el DataSet. Esto se hace eviente ya que


el
> DataSet se carga (de forma interna) a traves de un DataReader y
> posteriormente este DataSet se asocia al DataGrid... Al emplear
directamente
> el DataReader ganamos algo de "velocidad". Tambien debemos recordar que


el
> DataSet almacena todas las filas en memoria mientras que el DataReader
solo
> almacena la fila a la cual esta apuntando en ese momento. Esto implica


que
> empleamos menos recursos del sistema y por lo tanto tenemos mas recursos
> disponibles a medida que introducimos los datos en el ListView. La


contra
> partida es que el DataReader no es "navegable" (No podemos movernos por
sus
> registros libremente, y simplemente podemos avanzar)... Bueno habria mas
> detalles como que el DataSet lo podemos pasar en funciones pero los
> resultados de un DataReader no, y que para el DataReader debemos tener
> conexion si deseamos mostrarlos, mientras que en el DataSet al
almacenarlos
> en memoria los podriamos volver a mostrar sin necesidad de volvernos a
> conectar a la base de datos... etc...
>
> Si empleas el DataReader para cargar un ListView no te olvides del
> "listView1.BeginUpdate" antes de realizar el bucle que carga los datos y
el
> "EndUpdate" despues... Esto evita que el listview se redibuje cada vez


que
> incluimos un elemento nuevo y por lo tanto nos proporciona un poco mas


de
> velocidad.
>
> Espero haberte aclarado un poco tu duda, sino busca en google las
> diferencias entre DataSets y DataReaders y te lo aclarara un poco mas.
>
> Saludos,
>
> Juan Pedro González
>
>
> P.D. Personalmente, por defecto suelo emplear DataReaders a no ser de


que
un
> DataSet me presente una clara ventaja.
>
>
> "Sonia" escribió en el mensaje
> news:
> > 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?
> >
> >
> >
>
>
>



Respuesta Responder a este mensaje
#10 Sonia
27/06/2005 - 21:09 | Informe spam
hola!

en lo de editar los datos simpelmente lo q kiero es seleccionar una fila (y
coger el dato de la ultima columna q sera un codigo). entonces tengo varios
botones. 'modificar' 'borrar' el de mofificar te lleva a otro formulario
donde llevo los datos seleccionados en esa fila y modifico. al volver al
form anterior, actualizo el datagrid. en borrar siemplemente lo borro y en
insertar me voy a otro form , inserto los datos en textbox y actualizo.

esto es lo q estaba haciendo con los datagrids. es esto a lo q te refieres q
nos puede con los listview?

respecto a lo de lso procedimientos almacenados no se si te refieres a poner
las fucniones y procedimientos de cardar datagrid etc como publicas en un
modulo y en cada form q los kiera hacer llamadas a ellas. si es así es como
lo hago.
lo q keria ahora es probar la diferencia haciendolo con listview, pero kiero
hacerlo usando datareader y si puede ser tb con una funcion o procedimiento
aparte para simplemente hacer llamadas a ella para cargar el listview. pero
el codigo q encuentro sobre esto rellena los listview con dataset y kiero
hacerlo con datareader. sabes donde puedo encontrar algo al respecto?


"Bernardo Campos" escribió en el mensaje
news:#
Sonia, dos cosas quería comentar:

1. Quizas si pones tu consultas con proced. almacenados podria


mejorar.
2. Con el listView si muestras varias columnas, no puedes editar los
datos directamente en todas las columnas, solo podrás hacerlo en la


primera
columna, en cambio sí lo puedes hacer con un grid. Claro esto si quieres
editar los datos, pero si es solo para mostrar






Sta Cruz, Bolivia

"Sonia" wrote in message
news:
> hola
> gracias por la alcaracion.
> voy a intentar hacerlo con datareader usando listview, pero solo veo
> ejemplos de llenar_listview usando datasets. sabes donde puedo ver el
> ejemplo de llenar el listview usando datareader?
> gracias
>
> "Juan Pedro Gonzalez" escribió en el mensaje
> news:#
> > Hola Sonia,
> >
> > La mejora de rendimiento entre un DataGrid y un ListView radica en la
> forma
> > de acceder a los datos. Normalmente el DataGrid se carga a traves de


un
> > DataSet mientras que el ListView lo cargas mediante un DataReader.
> >
> > El DataReader es mas rápido que el DataSet. Esto se hace eviente ya


que
el
> > DataSet se carga (de forma interna) a traves de un DataReader y
> > posteriormente este DataSet se asocia al DataGrid... Al emplear
> directamente
> > el DataReader ganamos algo de "velocidad". Tambien debemos recordar


que
el
> > DataSet almacena todas las filas en memoria mientras que el DataReader
> solo
> > almacena la fila a la cual esta apuntando en ese momento. Esto implica
que
> > empleamos menos recursos del sistema y por lo tanto tenemos mas


recursos
> > disponibles a medida que introducimos los datos en el ListView. La
contra
> > partida es que el DataReader no es "navegable" (No podemos movernos


por
> sus
> > registros libremente, y simplemente podemos avanzar)... Bueno habria


mas
> > detalles como que el DataSet lo podemos pasar en funciones pero los
> > resultados de un DataReader no, y que para el DataReader debemos tener
> > conexion si deseamos mostrarlos, mientras que en el DataSet al
> almacenarlos
> > en memoria los podriamos volver a mostrar sin necesidad de volvernos a
> > conectar a la base de datos... etc...
> >
> > Si empleas el DataReader para cargar un ListView no te olvides del
> > "listView1.BeginUpdate" antes de realizar el bucle que carga los datos


y
> el
> > "EndUpdate" despues... Esto evita que el listview se redibuje cada vez
que
> > incluimos un elemento nuevo y por lo tanto nos proporciona un poco mas
de
> > velocidad.
> >
> > Espero haberte aclarado un poco tu duda, sino busca en google las
> > diferencias entre DataSets y DataReaders y te lo aclarara un poco mas.
> >
> > Saludos,
> >
> > Juan Pedro González
> >
> >
> > P.D. Personalmente, por defecto suelo emplear DataReaders a no ser de
que
> un
> > DataSet me presente una clara ventaja.
> >
> >
> > "Sonia" escribió en el mensaje
> > news:
> > > 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?
> > >
> > >
> > >
> >
> >
> >
>
>
>



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida