Foros del Web » Programación para mayores de 30 ;) » .NET »

Datagrid enlazado a TextBox

Estas en el tema de Datagrid enlazado a TextBox en el foro de .NET en Foros del Web. Hola soy nuevo, y tengo una pregunta facil de hacer, pero no me sale... Tengo un formulario con un datagrid que al cargarse el form ...
  #1 (permalink)  
Antiguo 18/01/2008, 23:24
 
Fecha de Ingreso: octubre-2003
Mensajes: 101
Antigüedad: 20 años, 6 meses
Puntos: 0
Datagrid enlazado a TextBox

Hola soy nuevo, y tengo una pregunta facil de hacer, pero no me sale...
Tengo un formulario con un datagrid que al cargarse el form se llena de datos, (clientes por ejemplo) con sus colunmas (nombre, dni....) y en el mismo formulario, tengo varios textbox, correspondientes a las colunmas de la tabla clientes (las mismas que el datagrid, dni, nombre, id, apellidos...) El caso es que queria que al ir navegando por el datagrid(es de solo lectura) se enlazaran los campos de la fila seleccionada con los textbox...

Gracias
  #2 (permalink)  
Antiguo 19/01/2008, 09:04
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 7 meses
Puntos: 87
Re: Datagrid enlazado a TextBox

utiliza los databinds del control al que quieras pasar los datos de la fila seleccionada

textbox.DataBindings(propiedad,fuenteds,columna)

si no me equivoco es algo asi

saludos
peterpay
  #3 (permalink)  
Antiguo 21/01/2008, 17:45
Avatar de rmarinsd  
Fecha de Ingreso: septiembre-2007
Mensajes: 78
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Datagrid enlazado a TextBox

Cita:
Iniciado por ManuelV Ver Mensaje
Hola soy nuevo, y tengo una pregunta facil de hacer, pero no me sale...
Tengo un formulario con un datagrid que al cargarse el form se llena de datos, (clientes por ejemplo) con sus colunmas (nombre, dni....) y en el mismo formulario, tengo varios textbox, correspondientes a las colunmas de la tabla clientes (las mismas que el datagrid, dni, nombre, id, apellidos...) El caso es que queria que al ir navegando por el datagrid(es de solo lectura) se enlazaran los campos de la fila seleccionada con los textbox...

Gracias
Mira esto te puede servir,value es la clase con los datos:

private void SetDatabindings(object value)
{
/////Limpias los controles
this.txtTexto1.DataBindings.Clear();
this.cmbCombo1.DataBindings.Clear();
///////Bindeas
this.txtTexto1.DataBindings.Add("Text",value,"Camp o");
this.cmbCombo1.DataBindings.Add("SelectedValue",va lue,"Campo2");
}

Suerte
  #4 (permalink)  
Antiguo 22/01/2008, 15:54
 
Fecha de Ingreso: octubre-2003
Mensajes: 101
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Datagrid enlazado a TextBox

Cita:
Iniciado por rmarinsd Ver Mensaje
Mira esto te puede servir,value es la clase con los datos:

private void SetDatabindings(object value)
{
/////Limpias los controles
this.txtTexto1.DataBindings.Clear();
this.cmbCombo1.DataBindings.Clear();
///////Bindeas
this.txtTexto1.DataBindings.Add("Text",value,"Camp o");
this.cmbCombo1.DataBindings.Add("SelectedValue",va lue,"Campo2");
}

Suerte

en "Text",value y campo que coloco?

disculpa por las preguntas tan basicas pero me estoy iniciando en c#

MANUEL.
  #5 (permalink)  
Antiguo 22/01/2008, 17:23
Avatar de rmarinsd  
Fecha de Ingreso: septiembre-2007
Mensajes: 78
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Datagrid enlazado a TextBox

Cita:
Iniciado por ManuelV Ver Mensaje
en "Text",value y campo que coloco?

disculpa por las preguntas tan basicas pero me estoy iniciando en c#

MANUEL.
Jeejeje no hay problema mira value seria la variable de la clase, por ejemplo si tienes la clase trabajador declaramos la variable variabletrabajador, y la clase trabajador tiene los siguientes campos:

Clave
departamento
puesto
Nombre

ahora por ahi tienes un metodo que lee los datos de un trabajador en la base, no se q se llame por ejemplo read o puedes hacerlo directo pero asignando los datos leidos a los atributos de la variable:

variabletrabajador.Read(clave);

ahora lo que quieres es usar esos datos para llenar lo textbox, invocarias el binding de la la siguiente forma

SetDataBindings(variabletrabajador);

y claro previamente tendrias el metodo SetDataBindings donde limpiarias primero los textbox y luego los ligarias a la clase, supongamos que tienes los siguientes textbox:

txtClave
txtNombre

y 2 combobox:

cmbDepartamento
cmbPuesto

private void SetDatabindings(object value)
{
/////Limpias los controles
this.txtClave.DataBindings.Clear();
this.txtNombre.DataBindings.Clear();
this.cmbDepartamento.DataBindings.Clear();
this.cmbPuesto.DataBindings.Clear();

///////Aqui se ligan los campos a los textbox y combobox
this.txtClave.DataBindings.Add("Text",value,"Clave ");
this.txtNombre.DataBindings.Add("Text",value,"Nomb re");
this.cmbDepartamento.DataBindings.Add("SelectedVal ue",value,"Departamento");
this.cmbPuesto.DataBindings.Add("SelectedValue",va lue,"Puesto");
}

Recuerda value recibe la variable de la clase por eso en el Add, usamos lo siguiente:
(Tipo,varialbe,atributo)

En tipo dependera del control al que bindearemos
"Text", indicamos que el control maneja texto, cuando bindeamos a textbox.
"SelectedValue", cuando bindeamos a combobox y que seleccione el valor que tenemos en el atributo

Variable, pues la variable de la clase

Atributo, el atributo de la clase que bindearemos al control

haber si me explique, suerte

Última edición por rmarinsd; 22/01/2008 a las 18:14 Razón: Me equivoque
  #6 (permalink)  
Antiguo 28/10/2008, 13:05
 
Fecha de Ingreso: julio-2008
Mensajes: 3
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Datagrid enlazado a TextBox

es mas facil si vas al modo grafico y agregas una columna seleccionar pero que este enlazada al campo que quieras de tu Base de Datos por ejemplo el id_empleado para que te aparezca el id del empleado en lugar de la palabra seleccionar en todas las filas, ya que tengas esto agregas una columna enlazada a la Base de Datos en el mismo campo que la de seleccionar y esta no la muestres ponla oculta, esto es debido a que la columna seleccionar no envia ningun dato al textbox y de echo la que envia el dato al textbox es la columna enlazada que ocultaste, una vez echo esto ahora si biene lo bueno en el evento SelectedIndexChange colocas tu codigo ejemplo:

private void DataGrid1_SelectedIndexChanged(object sender, System.EventArgs e)
{

//esto lo haces para cada uno de los textbox que tengas
nombretextbox.Text = DataGrid1.SelectedItem.Cells[1].Text;

/*
El siguiente if es con la finalidad de quitar " " que se genera cuando
el campo del datagrid esta vacio, ya que genera el codigo html antes mencionado
*/

if (nombretextbox.Text == " ")
{
nombretextbox.Text = "";
}

}

"SelectedItem.Cells[1].Text;" este codigo envia al textbox lo que esta seleccionado en datagrid en la columna "1" en formato texto. supongamos que este es tu datagrid

---------------------------------------------------------------------------------------------------
idempleado(seleccionar visible) | idempleado(enlazado oculto) | nomempleado
---------------------------------------------------------------------------------------------------

"Cell[0]" seria para el idempleado(seleccionar visible)
"Cell[1]" seria para el idempleado(enlazada oculta)
"Cell[2]" seria para el nomempleado

Como vez lo que le estamos enviando al textbox es el valor de tu columna enlazada la cual la tienes oculta, ya que si le enviaramos "Cell[0]" tu textbox siempre estaria en blanco esto debido a que seleccionar no envia datos.

Como vez es muy facil de esta forma ya que lo haces mas desde la parte grafica y el codigo es minimo, adiferencia de los otros comentarios este es muy facil y muy practico y lo haces en la mitad de tiempo, , .
  #7 (permalink)  
Antiguo 28/10/2008, 13:08
 
Fecha de Ingreso: julio-2008
Mensajes: 3
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Datagrid enlazado a TextBox

disculpa no especifique en que version hice esto verdad, bueno esto aplica Visual estudio 2003, pero yo creo que aplica para el 2005 tambien y esta en C# bueno eso esta demas ya que luego se distinge la sintaxis
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:40.