Barra de selección en Datagrid

03/08/2005 - 20:35 por Jesús G. | Informe spam
Hola:

Dentro de un formulario en me aplicación he incluido un Datagrid para
mostrar de una forma masiva los registros de una tabla. Quiero saber como
puedo incluir una barra de seleccion horizontal para que, utilizando las
flechas de dirección, elegir un registro determinado.

Vamos en otras palabras... como se hacía en VB 6.0 con el TrueDBGrid.

Ahora, sólo puedo hacer que los registros sean de sólo lectura, sin que el
usuario pueda modificarlo, pero además quiero situar una barra horizontal
para elegir el registro deseado.

Una manita me vendría muy.

Muchas gracias anticipadas.

Saludos

Jesús G.

Preguntas similare

Leer las respuestas

#1 Tristan
04/08/2005 - 00:25 | Informe spam
La posición actual en ado.net, se mantiene mediante un objeto
CurrencyManager. Lo puedes obtener mediante el BindingContext del
formulario. Por defecto, todos los controles enlazados comparten el mismo
contexto de posición que el formulario. Sería algo así:

Private WithEvents cm As CurrencyManager

Donde tengas tu dataset:

cm = DirectCast(Me.BindingContext(tuDataSet, "TuTabla"), CurrencyManager)

Ahora podrás mediante un botón, avanzar por ejemplo a la siguiente fila:

cm.Position += 1

Observa que se define CM como WithEvents. Esto te permitirá tratar distintos
eventos del contexto de posición, que pueden ser útiles.

Lo que no comprendo es lo que dices que solo puedes hacer que los registros
sean de solo lectura. No, no es realmente así. Se puede escribir
perfectamente en tu dataset, tanto mediante el datagrid, como mediante
textbox enlazados. Si te refieres a que no se envían las modificaciones a tu
BD, ten en cuenta que la actualización de un DataSet se realizad mediante el
método Update del DataAdapter.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#2 Jesús G.
04/08/2005 - 07:50 | Informe spam
Hola Tristán:

Ante todo quiero darte las gracias por la molestia en contestarme.

Creo que me puede valer lo que me indicas. Aunque tal vez no me expresé con
la suficiente claridad.

En un Datagrid, por defecto, puedes modificar los registros (cuando se
actualiza la BD). En principio, quiero que el datagrid presente un conjunto
de registros que no puedan ser modificados por el usuario, salvo, que lo
eliga y la haga doble clic (o enter). Para ello, deseo que sea mediante el
uso las flechas de dirección para que el usuario se vaya desplazando por lo
registros hasta que elija el deseado. Actuamente el Datagrid de VB 2003.net,
no selecciona el registro (visualmente) completo, sino que se situa en la
celda correspondiente.

Deseo que el registro activo en el Datagrid aparezca totalmente
seleccionado. Es decir de izquierda a derecha una barra (o lo que sea) que
indique al usuario que el registro está seleccionado.

Verás, me descargue e instalé el Visual Studio 2005 .NET beta 2. En
principio muy bien. Pero al ser una beta, observo que en el Datagrid hay una
propiedad que permite configurar esto que te indico, sin una sóla linea de
código. La propiedad es SelectionMode en el que puedes indicar varios
parametros, el que yo digo es el FullRowSelect.

Espero que me hayas entendido.

Muchas gracias.

Saludos

Jesús G.

"Tristan" escribió en el mensaje
news:
La posición actual en ado.net, se mantiene mediante un objeto
CurrencyManager. Lo puedes obtener mediante el BindingContext del
formulario. Por defecto, todos los controles enlazados comparten el mismo
contexto de posición que el formulario. Sería algo así:

Private WithEvents cm As CurrencyManager

Donde tengas tu dataset:

cm = DirectCast(Me.BindingContext(tuDataSet, "TuTabla"), CurrencyManager)

Ahora podrás mediante un botón, avanzar por ejemplo a la siguiente fila:

cm.Position += 1

Observa que se define CM como WithEvents. Esto te permitirá tratar
distintos eventos del contexto de posición, que pueden ser útiles.

Lo que no comprendo es lo que dices que solo puedes hacer que los
registros sean de solo lectura. No, no es realmente así. Se puede escribir
perfectamente en tu dataset, tanto mediante el datagrid, como mediante
textbox enlazados. Si te refieres a que no se envían las modificaciones a
tu BD, ten en cuenta que la actualización de un DataSet se realizad
mediante el método Update del DataAdapter.

Juan Carlos Badiola
MVP - C#

Respuesta Responder a este mensaje
#3 Tristan
04/08/2005 - 19:47 | Informe spam
A ver si ahora te he entendido mejor.

Lo de que las filas no puedan ser modificadas se define con la propiedad
ReadOnly del DataGrid.

En cuanto a la selección, no es tan sencillo como en vs.net 2005, pero
puedes hacer esto:

En el evento CurrentCellChanged del DataGrid, incluye esta sentencia:

TuDataGrid.Select(TuDataGrid.CurrentCell.RowNumber)

Si necesitas que no se resalte la celda activa, revisa este enlace:

http://www.syncfusion.com/faq/winfo...ch/856.asp

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#4 Jesús G.
04/08/2005 - 22:10 | Informe spam
Hola Tristan:

Parece ser que me vale. Muchas gracias. Voy a probarlo a fondo.

Saludos.

Jesús G.


"Tristan" escribió en el mensaje
news:
A ver si ahora te he entendido mejor.

Lo de que las filas no puedan ser modificadas se define con la propiedad
ReadOnly del DataGrid.

En cuanto a la selección, no es tan sencillo como en vs.net 2005, pero
puedes hacer esto:

En el evento CurrentCellChanged del DataGrid, incluye esta sentencia:

TuDataGrid.Select(TuDataGrid.CurrentCell.RowNumber)

Si necesitas que no se resalte la celda activa, revisa este enlace:

http://www.syncfusion.com/faq/winfo...ch/856.asp

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