moverse por un datagrid

31/05/2005 - 11:22 por Sonia | Informe spam
hola
tengo un datagrid en vb.net con varios articulos , donde voy seleccionando
linea a linea para elegir el articulo q kiero

pero solo lo coge si pinncho en la linea
hago esto:
x = DataGrid1.VisibleColumnCount

For Each flecha In MiTabla.Rows



mi pregunta es si hay alguna posibilidad de hacer esto mismo, pero
moviendome por el datagrid usando las felchitas del teclado. q al ir bajando
con la fecha vaya cogiendo cada vez la linea en la q estoy igual como lo
hace en vb6

es esto posible??

graciasss

Preguntas similare

Leer las respuestas

#1 Tristan
31/05/2005 - 22:32 | Informe spam
Sonia, espero estar comprendiendo lo que estás diciendo. ¿Te refieres a lo
que se suele llamar enlace a datos?

Si es eso, es realmente muy sencillo enlazar a datos con vb.net. Puedes
enlazar cualquier propiedad de un control, normalmente el Text:

Donde dispongas de tu fuente de datos, por ejemplo donde la asignes al
DataGrid:

tuDataGrid.DataSource = tuDataSet
...

Añade esto para cada control que quieras enlazar. No necesariamente tiene
que ser un TextBox. Cualquier control/propiedad admite DataBindings.

tuTextBox1.DataBindings.Add("Text", tuDataSet.Tables("TuTabla"), "TuCampo")

Puedes facilitarte mucho las cosas, si creas un DataSet tipado. Entonces la
forma de trabajo será prácticamente igual a la de VB. En ese caso todos
estos enlaces se crearían en tiempo de diseño sin escribir una sola línea de
código. Despliegas la propiedad DataBindings de tu TextBox, buscas el
dataset, seleccionas el campo y listo.

Si estás interesada, que sepas que los DataSet tipados son extremadamante
fáciles de crear. Lo único que tienes que hacer es crear un DataAdapter en
tiempo de diseño arrastrándolo a un formulario desde el cuadro de
herramientas. Sigues los pasos del asistente, y tendrás configurado el
DataAdapter (solo por eso merecería la pena). Pero todavía hay más,
seleccionas este dataadapter y con el botón derecha eliges "Generar conjunto
de datos".

PD:
Espero que hayas visto el ejemplo que te he expuesto en otra pregunta sobre
ComboBox. Es otra forma de hacer lo que quieres sin necesidad de enlazar a
datos (de lo que soy poco partidario).

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#2 Sonia
01/06/2005 - 10:58 | Informe spam
hola de nuevo
mira. lo q yo hacia era esto:
en el datagrid tenia q seleccionar la fila q kisiera y esos datos de la fila
se ponian en varios textbox(1 para cada columna) ya q hize este sub

Private Sub DataGrid1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles DataGrid1.Click

On Error GoTo error1

Dim titulo As String

Dim precio, iva As String

Dim gestiona As New basedatos

titulo = DataGrid1.Item(DataGrid1.CurrentCell.RowNumber, 0)

TextBox1.Text = titulo

precio = DataGrid1.Item(DataGrid1.CurrentCell.RowNumber, 1)

precio = precio.Replace(",", ".")

TextBox2.Text = precio

iva = DataGrid1.Item(DataGrid1.CurrentCell.RowNumber, 2)

iva = iva.Replace(",", ".")

TextBox3.Text = iva

mysql = "SELECT ARTICULOS.CLAVE FROM(ARTICULOS) WHERE
(((ARTICULOS.TITULO)='" & titulo & "') AND ((ARTICULOS.[pvp c/iva])=" & iva
& "));"

gestiona.BuscarValor(mysql, "articulos", articulo)

On Error GoTo 0

Exit Sub

error1:

End Sub



lo q quiero es simplemente cambiar esto para q haga los mismo pero sin tener
q seleccionar las filas (clic) es decir, deslizandome con las flechas



he mirado lo q me has dicho de crear un dataadapter en modo diseño lo q pasa
es q lo unico q veo es oledbdataadapter y oledbcdataadapter q pone para
conectarse con sqlserver y no tengo ni idea de q poner ahi.

de todas formas, es eso lo q he de hacer para lo q yo necesito, es decir,
para sustituir lo de 'clic' por la sflexitas???



"Tristan" escribió en el mensaje
news:Od#bV$
Sonia, espero estar comprendiendo lo que estás diciendo. ¿Te refieres a lo
que se suele llamar enlace a datos?

Si es eso, es realmente muy sencillo enlazar a datos con vb.net. Puedes
enlazar cualquier propiedad de un control, normalmente el Text:

Donde dispongas de tu fuente de datos, por ejemplo donde la asignes al
DataGrid:

tuDataGrid.DataSource = tuDataSet
...

Añade esto para cada control que quieras enlazar. No necesariamente tiene
que ser un TextBox. Cualquier control/propiedad admite DataBindings.

tuTextBox1.DataBindings.Add("Text", tuDataSet.Tables("TuTabla"),


"TuCampo")

Puedes facilitarte mucho las cosas, si creas un DataSet tipado. Entonces


la
forma de trabajo será prácticamente igual a la de VB. En ese caso todos
estos enlaces se crearían en tiempo de diseño sin escribir una sola línea


de
código. Despliegas la propiedad DataBindings de tu TextBox, buscas el
dataset, seleccionas el campo y listo.

Si estás interesada, que sepas que los DataSet tipados son extremadamante
fáciles de crear. Lo único que tienes que hacer es crear un DataAdapter en
tiempo de diseño arrastrándolo a un formulario desde el cuadro de
herramientas. Sigues los pasos del asistente, y tendrás configurado el
DataAdapter (solo por eso merecería la pena). Pero todavía hay más,
seleccionas este dataadapter y con el botón derecha eliges "Generar


conjunto
de datos".

PD:
Espero que hayas visto el ejemplo que te he expuesto en otra pregunta


sobre
ComboBox. Es otra forma de hacer lo que quieres sin necesidad de enlazar a
datos (de lo que soy poco partidario).

Juan Carlos Badiola
MVP - C#



Respuesta Responder a este mensaje
#3 Tristan
01/06/2005 - 16:52 | Informe spam
Creo que te había entendido mal. Para que el datagrid avance con las flechas
en lugar de con el ratón no hay que hacer nada especial. En cuanto el
datagrid tenga el foco funcionan las flechas.

Imagino que tu problema es que has elegido mal el evento para detectar
cuando se ha cambiado de celda. Posiblemente estás utilizando el evento
Click, u otro parecido. El evento del DataGrid que debes usar es
CurrentCellChanged. Mejor todavía es obtener los eventos del
CurrencyManager, pero no creo que debas entrar ahí de momento ;-)

En cuanto a lo otro que te explicado. Si lo haces no tendrás que preocuparte
de nada, no tendrías que escribir ni una sola línea en ningún evento.

A ver si me explico...

La pantalla que aparece al arrastrar un OleDbDataAdapter a tu formulario y
crear una nueva conexión, es exactamente la misma del DataEnvironment de
VB6. La pantalla de "Propiedades de vínculo de datos" tiene una pestaña
"Proveedor", en la que aparecen los proveedores OleDB de tu equipo. Si
quieres utilizar Access debes seleccionar "Microsoft Jet 4.0 OLE DB
Provider". A partir de ahí, solo seguir los pasos.

Una vez seleccionada la conexión, solo necesitas crear el comando Select de
tu consulta. Para esto dispondrás de un asistente en "Generador de
consultas" o podrás escribir el comando manualmente. Si no necesitas
actualizaciones, entra en "Opciones avanzadas" y desmarca la opción "Generar
instrucciones Insert, ..."

Una vez terminado todo, genera el conjunto de datos y listo.

Si no quieres o puedes seguir estos pasos, te aconsejo que hagas lo que te
dije en el mensaje anterior de DataBindings.Add(...) para crear el enlace a
datos.


Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#4 Sonia
02/06/2005 - 09:34 | Informe spam
ok. muchas gracias
simplemente sustituyendo la funcion
DataGrid1_Click

por

DataGrid1_CurrentCellChanged

ya me funciona correctamente.



gracias!!!

"Tristan" escribió en el mensaje
news:#
Creo que te había entendido mal. Para que el datagrid avance con las


flechas
en lugar de con el ratón no hay que hacer nada especial. En cuanto el
datagrid tenga el foco funcionan las flechas.

Imagino que tu problema es que has elegido mal el evento para detectar
cuando se ha cambiado de celda. Posiblemente estás utilizando el evento
Click, u otro parecido. El evento del DataGrid que debes usar es
CurrentCellChanged. Mejor todavía es obtener los eventos del
CurrencyManager, pero no creo que debas entrar ahí de momento ;-)

En cuanto a lo otro que te explicado. Si lo haces no tendrás que


preocuparte
de nada, no tendrías que escribir ni una sola línea en ningún evento.

A ver si me explico...

La pantalla que aparece al arrastrar un OleDbDataAdapter a tu formulario y
crear una nueva conexión, es exactamente la misma del DataEnvironment de
VB6. La pantalla de "Propiedades de vínculo de datos" tiene una pestaña
"Proveedor", en la que aparecen los proveedores OleDB de tu equipo. Si
quieres utilizar Access debes seleccionar "Microsoft Jet 4.0 OLE DB
Provider". A partir de ahí, solo seguir los pasos.

Una vez seleccionada la conexión, solo necesitas crear el comando Select


de
tu consulta. Para esto dispondrás de un asistente en "Generador de
consultas" o podrás escribir el comando manualmente. Si no necesitas
actualizaciones, entra en "Opciones avanzadas" y desmarca la opción


"Generar
instrucciones Insert, ..."

Una vez terminado todo, genera el conjunto de datos y listo.

Si no quieres o puedes seguir estos pasos, te aconsejo que hagas lo que te
dije en el mensaje anterior de DataBindings.Add(...) para crear el enlace


a
datos.


Juan Carlos Badiola
MVP - C#



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida