seleccionar una fila en un datagrid y mostrarlo en Textbox y PictureBox!

Answered seleccionar una fila en un datagrid y mostrarlo en Textbox y PictureBox!

  • martes, 30 de diciembre de 2008 5:55
     
     

    Bien, digamos que la primer parte la tengo casi resuelta! selecciono y puedo mostrar los datos en los textbox.
    El problema o mejor dicho no se que como tratarlo es a la hora de pasar la imagen de la columna al picturebox...
    Es aqui donde no se como hacerlo... ademas como puedo especificar o en que parte del codigo deberia de escribir el alto y ancho de una columna.... ya que como el DataGridView es pequeño trae todo muy a montonado....

    La primer parte al hacer un click en el boton, carga un DataGridView y ejecuta una ProgressBar....
    En la segunda parte es donde paso los campos leidos a los TextBox, pero ahi viene la duda como hago para pasar la imagen al PictureBox ?????????

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

    ProgressBar1.Visible = True

    calculaNumeroRegistros()

    ProgressBar1.Visible = True

    Dim conn As New SqlConnection("Data Source=............")

    Dim cmd1 As New SqlCommand("select count(*) as RowNumber from Tabla", conn)

    conn.Open()

    Dim da1 As SqlDataReader = cmd1.ExecuteReader()

    da1.Read()

    Dim RowNumber As Integer = CInt(da1(0))

    da1.Close()

    Me.ProgressBar1.Minimum = 0

    Me.ProgressBar1.Maximum = RowNumber

    Dim cmd As New SqlCommand("SELECT columna1 ..... columna16,foto from tabla order by id asc", conn)

    Dim da As SqlDataReader = cmd.ExecuteReader()

    Dim dt As New DataTable()

    ds = New DataSet()

    dt.Columns.Add("columna1", GetType(String)) .... <--- Aca como puedo especificar un ancho y alto fijo para la columna ?

    dt.Columns.Add("columna2", GetType(String))

    dt.Columns.Add("columna3", GetType(String))

    dt.Columns.Add("columna4", GetType(String))

    dt.Columns.Add("columna5", GetType(String))

    dt.Columns.Add("columna6", GetType(String))

    dt.Columns.Add("columna7", GetType(String))

    dt.Columns.Add("columna8", GetType(String))

    dt.Columns.Add("columna9", GetType(String))

    dt.Columns.Add("columna10", GetType(String))

    dt.Columns.Add("columna11", GetType(String))

    dt.Columns.Add("columna12", GetType(String))

    dt.Columns.Add("columna13", GetType(String))

    dt.Columns.Add("columna14", GetType(String))

    dt.Columns.Add("columna15", GetType(String))

    dt.Columns.Add("columna16", GetType(String))

    dt.Columns.Add("Foto", GetType(Byte()))

    Me.ProgressBar1.Value = 0

    While da.Read()

    Dim tempRow As DataRow = dt.NewRow()

    tempRow(0) = da(0)

    tempRow(1) = da(1)

    tempRow(2) = da(2)

    tempRow(3) = da(3)

    tempRow(4) = da(4)

    tempRow(5) = da(5)

    tempRow(6) = da(6)

    tempRow(7) = da(7)

    tempRow(8) = da(8)

    tempRow(9) = da(9)

    tempRow(10) = da(10)

    tempRow(11) = da(11)

    tempRow(12) = da(12)

    tempRow(13) = da(13)

    tempRow(14) = da(14)

    tempRow(15) = da(15)

    tempRow(16) = da(16)

    dt.Rows.Add(tempRow)

    Me.ProgressBar1.Value += 1

    End While

    ds.Tables.Add()

     

    Me.dgv.DataSource = dt

    ProgressBar1.Visible = False

    End Sub


    -------------> Segunda Parte :

    Private Sub dgv_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv.CellContentClick

    columna1TextBox.Text = Convert.ToString(Me.dgv.CurrentRow.Cells(0).Value)

    columna2TextBox.Text = Convert.ToString(Me.dgv.CurrentRow.Cells(1).Value)

    columna3TextBox.Text = Convert.ToString(Me.dgv.CurrentRow.Cells(2).Value)

    columna4TextBox.Text = Convert.ToString(Me.dgv.CurrentRow.Cells(3).Value)

    columna5TextBox.Text = Convert.ToString(Me.dgv.CurrentRow.Cells(4).Value)

    columna6TextBox.Text = Convert.ToString(Me.dgv.CurrentRow.Cells(5).Value)

    columna7TextBox.Text = Convert.ToString(Me.dgv.CurrentRow.Cells(6).Value)

    columna8TextBox.Text = Convert.ToString(Me.dgv.CurrentRow.Cells(7).Value)

    columna9TextBox.Text = Convert.ToString(Me.dgv.CurrentRow.Cells(8).Value)

    columna10TextBox.Text = Convert.ToString(Me.dgv.CurrentRow.Cells(9).Value)

    columna11TextBox.Text = Convert.ToString(Me.dgv.CurrentRow.Cells(10).Value)

    columna12TextBox.Text = Convert.ToString(Me.dgv.CurrentRow.Cells(11).Value)

    columna13TextBox.Text = Convert.ToString(Me.dgv.CurrentRow.Cells(12).Value)

    columna14TextBox.Text = Convert.ToString(Me.dgv.CurrentRow.Cells(13).Value)

    columna15TextBox.Text = Convert.ToString(Me.dgv.CurrentRow.Cells(14).Value)

    columna16TextBox.Text = Convert.ToString(Me.dgv.CurrentRow.Cells(15).Value)

    FotoPictureBox .................... ? Aqui ya no se que hacer !

    ** Desde ya muchas gracias, anticipadas y Feliz Año Nuevo para todos!

     

    End Sub

     

     

Todas las respuestas

  • martes, 30 de diciembre de 2008 15:04
     
     

    Prueba con esto:

     

    Me.FotoPictureBox.Image = Me.dgv.CurrentRow.Cells(x).Value

     

     

     

     

     

  • miércoles, 31 de diciembre de 2008 2:51
     
     

    No! ya habia probodado esa forma tambien y me da el siguiente error....

    No se puede convertir un objeto de tipo System.Byte[] al tipo System.Drawing.Image

    Desde ya muchas gracias, sera que esta dificil? no le encuentro la vuelta!

  • martes, 30 de junio de 2009 18:58
     
     Respondida
     

    yo tambien tuve ese problema para pasar de un datagridview a picturebox, pero buscado encontre en internet
    algo que si me sirvio, este es el codigo que yo uso en mi sistema, solo que esta hecho en C#, espero que te sirva, saludos.

    using

     

    (System.IO.MemoryStream Ms = new System.IO.MemoryStream())//con esto importas el espacio System.IO

    {

    //pasamos la imagen del datagridview a picturebox

     

    byte[] Img = ((byte[])Rw.Cells[X].Value);//Rw es un DatagridViewRow

    Ms.Write(Img, 0,Img.GetUpperBound(0) + 1);

    pcBnd.SizeMode =

    PictureBoxSizeMode.StretchImage;

    pcBnd.Image =

    Image.FromStream(Ms);

    Ms.Close();

    }

  • miércoles, 01 de julio de 2009 9:56
     
     
    Hola Compañero

    No se si todavia te hace falta

    Para formar una imagen desde un array de bytes puedes usar esto

    FotoPictureBox.image = Image.FromStream(New MemoryStream(Me.dgv.CurrentRow.Cells(x).value

    Hay que importar el espacio de nombres System.IO

    Saluodos
    Luis
  • jueves, 30 de julio de 2009 15:57
     
     
    hola

    yo tambien tengo una duda en cuanto al ejercicio propuesto....
    el asunto es que yo trabaje con el codigo que hay arriba...
    pero yo necesito que los datos del datagriview me los lleve a unos
    texbox en otro formulario...

    lo que yo hice fue lo mismo solo que modifique esto

    MAESTRAS.txtidequipo.Text = Convert.ToString(

    Me.DataGridView1.CurrentRow.Cells(0).Value)

    maestras: es el nombre del otro formulario

    pero solo me pasa a esos textbox el primer registro que hay en el datagriview
    mmm que hago????


    dicasta02@gmail.com

  • miércoles, 02 de mayo de 2012 18:28
     
     

    Muchísimas gracias amigo, Funciona de Maravilla....


  • miércoles, 02 de mayo de 2012 18:30
     
     

    No me funciona por que pide que haga el cast

    Entonces hice esto:

    PictureBox1.Image = ((Image) datagridview1.CurrentRow.Cells(x).Value);

    Pero tampoco funciona haciendo el cast