datagridview

04/04/2006 - 12:59 por Bezael | Informe spam
Hola tengo un DatagridView al cual le cargo una tabla con un dataset, pero
ahora deseo que cuando haga click en una celda los datos se me carguen en
unos textbox pero no me sale; y tambien trato de que si modifico algun dato
se me guarden pero tampoco me sale. alguna sugerencia, por favor.
 

Leer las respuestas

#1 Luis Miguel Blanco
05/04/2006 - 18:47 | Informe spam
Hola Bezael

Para conseguir que al hacer clic en una celda, se cargue dicha celda, o
incluso, los campos de la fila en varios textbox, puedes escribir un
manipulador para el evento CellClick del control DataGridView, el cual recibe
información acerca de la fila en la que estamos posicionados, pero debes
tener en cuenta que de donde tenemos que obtener los datos no es de las
propias celdas del control grid, sino del dataset subyacente que está
asociado al grid, es por ello, que de esta forma podemos no sólo obtener el
valor de celda pulsada, sino todos los campos de su fila.

Por otra parte, el problema que mencionas acerca de actualizar los datos que
has modificado en el DataGridView, no es tanto una cuestión del control grid,
sino de actualización de su dataset asociado contra la base de datos origen.
Esto lo conseguimos a través de un objeto DataAdapter, por ejemplo, el mismo
que hayamos usado para cargar inicialmente el dataset.

Como punto importante a tener en cuenta en este paso de actualización,
observa que al DataAdapter debemos aplicarle un objeto CommandBuilder, ya que
en caso contrario, el adaptador no sabe cómo ejecutar las instrucciones de
inserción, modificación o borrado contra la base de datos origen.

Todas estas cuestiones están contempladas en el bloque de código que te
adjunto, el cual puedes modificar para adaptarlo a un caso particular tuyo y
comprobar el funcionamiento.

'//////////////////////////////////////////
Imports System.Data.SqlClient

Public Class Form1
Private oConexion As SqlConnection
Private oDataSet As DataSet
Private oAdaptador As SqlDataAdapter

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
oConexion = New SqlConnection("Data Source=localhost;Initial
Catalog=PRUEBA;Integrated Security=True")

Dim oComando As SqlCommand = New SqlCommand()
oComando.Connection = oConexion
oComando.CommandText = "SELECT * FROM Personas"

oAdaptador = New SqlDataAdapter(oComando)

Dim oCmdBuilder As SqlCommandBuilder = New
SqlCommandBuilder(oAdaptador)

oDataSet = New DataSet

oConexion.Open()
oAdaptador.Fill(oDataSet, "Personas")
oConexion.Close()

Me.DataGridView1.DataSource = oDataSet
Me.DataGridView1.DataMember = "Personas"
End Sub

Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles
DataGridView1.CellClick
Dim nFila As Integer = e.RowIndex
Dim nColumna As Integer = e.ColumnIndex

Me.txtIDPersona.Text =
oDataSet.Tables("Personas").Rows(nFila)("IDPersona")
Me.txtNombre.Text = oDataSet.Tables("Personas").Rows(nFila)("Nombre")
Me.txtCiudad.Text = oDataSet.Tables("Personas").Rows(nFila)("Ciudad")
End Sub

Private Sub btnGrabar_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnGrabar.Click
oConexion.Open()
oAdaptador.Update(oDataSet, "Personas")
oConexion.Close()
End Sub
End Class
'//////////////////////////////////////////

Espero que te sea de utilidad.

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Bezael" wrote:

Hola tengo un DatagridView al cual le cargo una tabla con un dataset, pero
ahora deseo que cuando haga click en una celda los datos se me carguen en
unos textbox pero no me sale; y tambien trato de que si modifico algun dato
se me guarden pero tampoco me sale. alguna sugerencia, por favor.

Preguntas similares