SALUDOS, en este post le mostrare un método para pasar datos de un registro desde un datagridview a un textbox . Necesitamos 3 argumentos:
1- El datagrid de donde seleccionaremos el registro. 2- El textbox donde mostraremos el valor deseado.
3- string Columna, es el nombre del campo que deseamos pasar al textbox. Veamos el método:
public void Pasarcampo(DataGridView midgv, TextBox txb, string columna)
{
// especifico que campo de la fila que este seleccionada vamos a pasar al textbox
txb.Text = midgv.Rows[midgv.CurrentRow.Index].Cells[columna].Value.ToString();
}
midgv.Rows : hace referencia a una fila del grid.
[midgv.CurrentRow.Index] : especifica que fila tenemos seleccionada.
.Cells[columna].Value : Se refiere al valor de la celda que tenemos seleccionada en el grid, en donde columna es el nombre de la celda o campo.
ToString() que es para convertir el valor del resultado en string para poder asignarlo a la propiedad text de nuestro textbox.
Lo guardamos en una clase, por ejemplo... clase utilidad.
Una forma de usarlo seria la siguiente:
utilidad u = new utilidad();
u.Pasarcampo(Midatagrid,mitextbox,"micolumna");
Ya esta. con esta linea implementas el método y lo que sucede es lo siguiente:
de Midatagrid, se selecciona la columna "micolumna" de la fila seleccionada y la muestro en mitexbox.
Si quieres pasar varios campos o todo u registro, hazlo de esta forma:
u.Pasarcampo(Midatagrid,mitextbox1,"micolumna1");
u.Pasarcampo(Midatagrid,mitextbox2,"micolumna2");
u.Pasarcampo(Midatagrid,mitextbox3,"micolumna3");
u.Pasarcampo(Midatagrid,mitextbox4,"micolumna4");
etc.. Espero haya sido útil.
disculpen, se puede utilizar en visual studio 2010?
ResponderEliminarSaludos, claro que si mi hermano. Lo puedes implementar tal cual esta, sin ningun problema. Recuerda crear tu clase generica para que este metodo lo puedas cargar y reutilizar en tantos proyectos como quieras. Asi haces una buena practica de lo que es orientacion a objetos y por consecuente la aplicacion te resultara mas flexible. Cualquier otra pregunta estamos a su orden. Solo disculpa por el tiempo de respuesta porque estoy en el trabajo y en la universidad y a veces no tengo tiempo de dar respuesta inmediata.
ResponderEliminargracias carnal, shido tu aporte
ResponderEliminarpesimo
ResponderEliminarexcelente articulo mi pana, me ha servido bastante, soy seguidor de esta pagina y te felicito por tu excelente trabajo, feliz navidad.
ResponderEliminarGracias!! recuerda...cualquier pregunta me puedes escribir aquí o a los correos solocsharp@gmail, csharpenlinea@gmail.com!
ResponderEliminarFeliz navidad!
Para Visual Basic 2010 cual seria el codigo.
ResponderEliminarGracias de antemano.
Para Visual Studio 2010 el código es el mismo. Recuerda que el código es mas propio del leguaje que uses y del FrameWork, pero no del IDE.
ResponderEliminarSaludos!!
Hola compañero muy buena aoportación yo quiero hacer lago similar, con varios tipos de campos, es decir que al dar clic a un registro del datagridview, me llene los campos textbox,combobox y un checkbox en ese mismo formulario.Porfavor te lo agradeceria si pudieras ayudarme.
ResponderEliminarDebo aclarar que el datagridview carga los datos desde una base de datos sqlserver 2005
ResponderEliminarHola, hice la prueba, pero si creo el metodo en la clase Utilidad, me marca 2 errores:
ResponderEliminar"Error, No se puede encontrar el tipo o el nombre de espacio de nombres 'DataGridView' (¿falta una directiva using o una referencia de ensamblado?)"
"Error, No se puede encontrar el tipo o el nombre de espacio de nombres 'TextBox' (¿falta una directiva using o una referencia de ensamblado?)"
Disculpa la tardanza! errores. Al parecer en alguna parte has escrito texbox donde necesitas especificar la propiedad text del textbox = textbox.text. al igual con el Datagridview!
ResponderEliminarOtra cosa, si la aplicación es web, el termino DataGridView no es reconocido en ambiente web, en este caso se utiliza GridView!
ResponderEliminarPara llenar el combo y el checkBox tambien podriamos agregarselos como parametros a la funcion pasarCampo. Prepare el codigo y te lo enviare!
ResponderEliminarHola Felix, me puedes ayudar como hago lo mismo con un cobobox gracias de antemano por tu atención
ResponderEliminarSaludos, Bueno... en el caso de trabajar con el combo, en vez de tener como parametro segundo un textbox, utilizariamos un combobox, ej:
ResponderEliminarpublic void Pasarcampo(DataGridView midgv, ComboBox cbo, string columna)
{
// especifico que campo de la fila que este seleccionada vamos a pasar al textbox
cbo.Text = midgv.Rows[midgv.CurrentRow.Index].Cells[columna].Value.ToString();
}
Eso es todo. Incluso, poniendo este código en los eventos click y selection_changing del datagrid, la información que pasas al textbox o al combo en este caso, cambiara según vayas recorriendo el grid. Ademas, puedes usar un label también. Es bastante útil.
no sale ,al querer traer datos de un datagridview a un combobox no sale
Eliminary en caso de cambio de seleccion en el datagrid, es decir cuando se seleccione una fila me modifiquen automaticamente los textbox.
ResponderEliminarcomo seria para vb 2010, Gracias
saludos, te respondo omovil... en este caso se necesita el uso del evento SelectionChanged del DataGridView que se dispara cuando cambia la selección del grid es decir, lo que me preguntas. Entonces sería simplemente poner el mismo código que tienes para pasarlo al textbox, ponerlo tambien dentro del bloque del evento SelectionChanged del grid. Intentalo, cualquier cosa me vuelves a escribir. ;)
ResponderEliminarPara el anonimo que le daba un error de... falta directiva using o referencia de ensamblado... de seguro te falta lo siguiente:
ResponderEliminarusing System.Windows.Forms();
esta es la libreria para manejar todos los objetos textbox,label,datagrid,listview,combo, etc... esta es una de las principales librerias que normalmente la pone autonmatica vstudio cuando creas un formulario. que raro que no te aparecio. Saludos
si quiero hacerlo, pero quiero hacerlo con dos form distintos, como lo hago? con variables staticas???
ResponderEliminarhola buenas tardes Foro!!
ResponderEliminartengo una duda estoy haciendo una pagina web con base de datos donde muestro mis datos lo que quiero hacer es con un hyperlinkcolum darle click y habrir un popup donde muestre la informacion de de una celda en particular de la fila en la que le di click al hyperlink ya tengo el popup pero no puedo pasar los datos de la celda a un textbox del popup como le hago para pasar datos del gridview al textbox del popup..
espero haberme explicado bien jejej.
saludos!!!
genial
ResponderEliminarMuchas gracias por el aporte, me saco de apuros.
ResponderEliminarSaludos desde Peru.
como utilizarlo en una pagina.aspx
ResponderEliminarrocha.ter01@hotmail.com
le agradezco q me lo envien
gracias
hola, lo que yo quiero hacer es pasar datos de un grid a distintos textbox con la diferencia en que el grid esta en un formulario y los textbox en otro formulario. Me pueden explicar como hacerlo? Muchas gracias.
ResponderEliminarAmigo tegno una pregunta, esto me sirve si tegno el datagrid y el txb en el mismo formulario, pero si tengo el datagrid en un formulario y el txb en otro como hago para direccionarlo. Gracias
ResponderEliminarbuenos tardes me podrian decir como paso datos de un datagrid a un label
ResponderEliminarshit! lo unico que no se como hacer es como pasarle el nombre o numero de la columna que yo quiero a la variable columna.
ResponderEliminarsuponte que tengo 5 columnas, como le asigno la numero 2 a la variable columna?
este mismo ejemplo pero en vb.net es?
ResponderEliminarbuen ejemplo, solo que como se le pasarian datos a un Label y a un Checkbox?
ResponderEliminarHice exactamente lo que dices y no me corre el programa a ver si alguien me ayuda a corregir el programa ya que es una practica de la Univ.
ResponderEliminarusing System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Tarea_proyecto_contabilidad
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void bttagregar_Click(object sender, EventArgs e)
{
dgvcontabilidad.Rows.Add(txtcuenta.Text, txtdescripcion.Text, cbbtipo.Text, txtmonto.Text);
txtcuenta.Text = "";
txtdescripcion.Text = "";
cbbtipo.Text = "";
txtmonto.Text = "";
txtcuenta.Focus ();
}
private void cbbtipo_SelectedIndexChanged(object sender, EventArgs e)
{
MessageBox.Show("Se ha seleccionado la cuenta: " + cbbtipo.Text);
}
private void dgvcontabilidad_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
// especifico que campo de la fila que este seleccionada vamos a pasar al textbox
txtcuenta.Text = txtcuenta.Rows[txtcuenta.CurrentRow.Index].Cells[Column1].Value.ToString();
}
}
}
Hola buen aporte men pero me arroja un error:
ResponderEliminarcar.Pasarcampo(dataGridView1, txt4, "Column4"); <--------- Ninguna sobrecarga para el metodo 'Pasarcampo' toma '3' argumentos.......
Alguna sugerencia o solución se agradece, Gracias.
HOLA BUENAS TARDES ESPERO ME PUEDAN AYUDAR YO TENGO UN LISTVIEW QUE SE CARGA CON UNA CONSULTA DE SQLSEVER EN C# ASPX Y QUIERO MANDAR ESOS DATOS A UNA TABLA QUE SE LLAMA RESULTADOS
ResponderEliminar