none
pasar datos de un textbox a un datagridview

    Pregunta

  •  

    Hola amigos quisiera que me den una ayuda en este problemita en visual C#.

     

    Quiero saber como puedo llenar un datagridview a partir de los datos que tengo en los textbox, por ejemplo.

     

    this.Txt_Nombre.text = "Cristian";

    this.Txt_Apellido.text = "Benitez";

    this.Txt_Edad.text = "24";

    .

    .

    .

    Estos datos quiero pasarlos a un datagridview y no se como, si pudieran darme una orientacion para pasarlo de tal manera que quede en una fila, nombre, apellido, edad, etc. y asi cada vez que de un clic en un boton se valla creando una nueva fila con la informacion que le de a los textbox;

     

    private void button1_Click(object sender, EventArgs e)

    {

    datagridview = textboxs

    }

    • Cambiado webJoseModerator miércoles, 31 de octubre de 2012 23:29 (De:Lenguaje C#)
    sábado, 12 de julio de 2008 3:32

Respuestas

  • O.K., vamos por pasos:

     

    1) La clase para contener os datos de una linea:

     

    Code Snippet

    class LineaDelGrid

    {

        private string nombre;

        public string Nombre { get { return nombre; } set { nombre=value; } }

        private string apellido;

        public string Apellido{ get { return apellido; } set { apellido=value; } }

        private string edad;

        public int Edad{ get { return edad; } set { edad=value; } }

        public LineaDelGrid(string nombre, string apellido, int edad)

        {

            this,Nombre=nombre;

            this.Apellido=apellido;

            this.Edad=edad;

        }

    }

     

     

    La clase anterior la puedes añadir como un archivo independiente al proyecto, o puedes pegar ese mismo código dentro del mismo fichero fuente del formulario que estás diseñando.

     

    2) La colección para contener las lineas de grid. Esta tienes que declararla dentro de la clase de tu formulario:

     

    Code Snippet

    List ColeccionDeLineas = new List();

     

     

    3) El enlace con el GridView. Este puedes ponerlo, por ejemplo, dentro del Form_Load:

     

    Code Snippet

    DataGirdView1.DataSource = ColeccionDeLineas;

     

     

    4) Añadir una linea nueva. Esto lo metes en el Click del botón que tiene que pasar los textboxes al DataGridView:

     

    Code Snippet

    LineaDelGrid lg = new LineaDelGrid(textBoxNombre.Text, textBoxApellido.Text, int.Parse(textBoxEdad.Text));

    ColeccionDeLineas.Add(lg);

     

     

     

     

    lunes, 14 de julio de 2008 6:20
  • Al llamar desde el formulario1 al 2, seguramente estarás haciendo algo parecido a esto:

     

    formulario2 frm = new formulario2();

    frm.ShowDialog();

    //AQUI

    frm.Dispose();

     

    Pues bien, en el código anterior, donde he marcado "AQUI" es donde hay que recuperar los datos del formulario2 para procesarlos en el 1 (es decir, al voler del ShowDialog, que es cuando ya se ha cerrado el formulario2, pero antes del Dispose, que es cuando se "borra" su contenido).

     

    En el formulario2, declara como públicas las variables o propiedades que devuelven la información que quieres recuperar desde el formulario1. Y si tienes un botón de "OK" y otro de "cancelar", devuelve desde ellos, respectivamente, un Ok y un Cancel en el DialogResult del formularo.

    Suponiendo, por ejemplo, que en el OK devuelves un dato asi:

     

    public string CodigoDeProducto;

    ...

    private void cmdOk_Click(...)

    {

        this.CodigoDeProducto = textBox1.Text;

        this.DialogResult=DialogResult.Ok;

    }

     

    Después recuperarías este valor en el formulario2 asi:

     

    formulario2 frm = new formulario2();

    DialogResult res = frm.ShowDialog();

    if (res==DialogResult.Ok)

    {

        valorRecuperado = frm.CodigoDeProducto;

        //Procesar aqui el dato recuperado

    }

    frm.Dispose();

     

    jueves, 17 de julio de 2008 5:50

Todas las respuestas

  • 1: Crea una clase con trea propiedades públicas (Nombre, Apellido, Edad). Llamémosle a la clase LineaDelGrid. OJO, tienen que ser propiedades, no vale que sean campos.

     

    2: Crea una colección de elementos de la clase anterior, por ejemplo, un List<LineaDelGrid>. Llamémosle ColeccionDeLineas. Inicialízala para que no sea null.

    List<LineaDelGrid> ColeccionDeLineas = new List<LineaDelGrid>();

     

    3: Enlaza esta colección al DataSource del DataGridView.

    DataGirdView1.DataSource = ColeccionDeLineas;

     

    4: En el click del botón que tiene que pasar los textboxes al DataGridView, crea una instancia de LineaDelGrid, mete en sus propiedades los valores de los textboxes, y añádelo con un Add a la ColeccionDeLineas. Con esto aparece automáticamente en el DataGridView.

     

    sábado, 12 de julio de 2008 7:08
  • hola gracias por la ayuda, pero perdona la pregunta lo que sucede es que estoy aprendiendo este programa y quisiera saber si me lo puedes dar mas masticado. algun codigo de ejemplo. estaria muy agradecido...

     

    lunes, 14 de julio de 2008 1:25
  • O.K., vamos por pasos:

     

    1) La clase para contener os datos de una linea:

     

    Code Snippet

    class LineaDelGrid

    {

        private string nombre;

        public string Nombre { get { return nombre; } set { nombre=value; } }

        private string apellido;

        public string Apellido{ get { return apellido; } set { apellido=value; } }

        private string edad;

        public int Edad{ get { return edad; } set { edad=value; } }

        public LineaDelGrid(string nombre, string apellido, int edad)

        {

            this,Nombre=nombre;

            this.Apellido=apellido;

            this.Edad=edad;

        }

    }

     

     

    La clase anterior la puedes añadir como un archivo independiente al proyecto, o puedes pegar ese mismo código dentro del mismo fichero fuente del formulario que estás diseñando.

     

    2) La colección para contener las lineas de grid. Esta tienes que declararla dentro de la clase de tu formulario:

     

    Code Snippet

    List ColeccionDeLineas = new List();

     

     

    3) El enlace con el GridView. Este puedes ponerlo, por ejemplo, dentro del Form_Load:

     

    Code Snippet

    DataGirdView1.DataSource = ColeccionDeLineas;

     

     

    4) Añadir una linea nueva. Esto lo metes en el Click del botón que tiene que pasar los textboxes al DataGridView:

     

    Code Snippet

    LineaDelGrid lg = new LineaDelGrid(textBoxNombre.Text, textBoxApellido.Text, int.Parse(textBoxEdad.Text));

    ColeccionDeLineas.Add(lg);

     

     

     

     

    lunes, 14 de julio de 2008 6:20
  • Hola quiero agradecerle mucho por su ayuda, estuvo genial, solo que le cambie esta linea.

     

    Code Snippet

    List<LineaDelGrid> ColeccionDeLineas = new List<LineaDelGrid>();

     

     

    agrege <LineaDelGrid> porque no me funcionaba sin <>.

     

    Y tambien aqui me funciono de la siguiente manera. porque cada vez que daba un clic en el boton solo se me presenta una sola vez el primer registro agregado y los demas no aparecen, pero me di cuenta de que la Lista sigue almacenando los registros.

     

    Code Snippet

    private void Btn_OK_Click(object sender, EventArgs e)

    {

    ColeccionDeLineas.Add(new LineaDelGrid(this.Txt_Nombre.Text, this.Txt_Apellido.Text, int.Parse(this.Txt_Edad.Text)));

    //aqui agrego un contador

    cont += 1;

    //si el contador es igual a 5 registros cargo el datagridview1

    if (cont == 5)

    {

    this.dataGridView1.DataSource = ColeccionDeLineas;

    }

    }

     

    Si hubiera otra manera de que dinamicamente que al momento de agregar un nuevo registro se actualize o refresque el datagridview1, seria aun mucho mejor
    miércoles, 16 de julio de 2008 4:04
  • Hola Sr. Alberto

    Quisiera saber si me puede dar una mano con una factura que estoy queriendo hacer, por decir,

    1. Ttengo un formulario1 en donde tengo los datos de la cabecera de la factura, para el detalle tengo un datagridview1, ahora cuando quiero llenar el datagridview1 con los productos buscados,  doy clic en un boton que se llama nuevo en donde llamo a otro formulario2, en este formulario2  tambien tengo otro datagridview2 en donde busco el producto, lo encuentro y en unos texbox ingreso cantidad, precio

    aqui tambien tengo un boton en donde al momento de dar clic para pasar esos datos del formulario2 al formulario1 de la  factura, pero no puedo hacer que se envien los datos.

    que debo de hacer...

     

    jueves, 17 de julio de 2008 5:27
  • Al llamar desde el formulario1 al 2, seguramente estarás haciendo algo parecido a esto:

     

    formulario2 frm = new formulario2();

    frm.ShowDialog();

    //AQUI

    frm.Dispose();

     

    Pues bien, en el código anterior, donde he marcado "AQUI" es donde hay que recuperar los datos del formulario2 para procesarlos en el 1 (es decir, al voler del ShowDialog, que es cuando ya se ha cerrado el formulario2, pero antes del Dispose, que es cuando se "borra" su contenido).

     

    En el formulario2, declara como públicas las variables o propiedades que devuelven la información que quieres recuperar desde el formulario1. Y si tienes un botón de "OK" y otro de "cancelar", devuelve desde ellos, respectivamente, un Ok y un Cancel en el DialogResult del formularo.

    Suponiendo, por ejemplo, que en el OK devuelves un dato asi:

     

    public string CodigoDeProducto;

    ...

    private void cmdOk_Click(...)

    {

        this.CodigoDeProducto = textBox1.Text;

        this.DialogResult=DialogResult.Ok;

    }

     

    Después recuperarías este valor en el formulario2 asi:

     

    formulario2 frm = new formulario2();

    DialogResult res = frm.ShowDialog();

    if (res==DialogResult.Ok)

    {

        valorRecuperado = frm.CodigoDeProducto;

        //Procesar aqui el dato recuperado

    }

    frm.Dispose();

     

    jueves, 17 de julio de 2008 5:50
  • Hola Sr. Alberto,

    Quiero agradecerle por la ayuda prestada, ya me salio lo de cargar los datos desde otro formulario a una grilla asi como usted dijo.

    Quisiera saber si me topo con otro incomveniente podre contar con su ayuda.

    De antemano mil gracias

    lunes, 21 de julio de 2008 3:30
  •  Vangoth Escribió:

    Quisiera saber si me topo con otro incomveniente podre contar con su ayuda.

     

    Sí, claro. Si le surge un nuevo inconveniente, le recomiendo que abra un nuevo hilo bajo un título edecuado, bien sea en estos mismos foros de MSDN o bien en el grupo público news.microsoft.com:microsoft.public.es.csharp, donde tanto yo mismo como otros participantes habitualmente examinamos las preguntas y respondemos cuando conocemos las respuestas y tenemos oportunidad de hacerlo.

    lunes, 21 de julio de 2008 5:53
  • Yo necesito pasar tambien los datos de los textbox al datagrid pero con vb.net...

    hice el ejemplo en codigo vb pero el sub que tengo en la clase LineaDelGrid que tiene el mismo nombre pero con 5 parametros (en mi caso) no lo detecta en la clase de mi formulario, me dice que me paso de los argumentos del LineaDelGrid.

    mi codigo es el siguiente:

    Public Class LineaDelGrid

    Private fecha As Date

    Public Property _Fecha() As Date

    Get

    Return fecha

    End Get

    Set(ByVal value As Date)

    fecha = value

    End Set

    End Property

    Private proveedor As String

    Public Property _Proveedor() As String

    Get

    Return proveedor

    End Get

    Set(ByVal value As String)

    proveedor = value

    End Set

    End Property

    Private formato As String

    Public Property _formato() As String

    Get

    Return formato

    End Get

    Set(ByVal value As String)

    formato = value

    End Set

    End Property

    Private cant_solicitada As Integer

    Public Property _cant_solicitada() As Integer

    Get

    Return cant_solicitada

    End Get

    Set(ByVal value As Integer)

    cant_solicitada = value

    End Set

    End Property

    Private cant_recibida As Integer

    Public Property _cant_recibida() As Integer

    Get

    Return cant_recibida

    End Get

    Set(ByVal value As Integer)

    cant_recibida = value

    End Set

    End Property

     

    Public Sub LineaDelGrid(ByVal fecha As Date, ByVal proveedor As String, ByVal formato As String, ByVal cant_solicitada As Integer, ByVal cant_recibida As Integer)

    Me._Fecha = fecha

    Me._Proveedor = proveedor

    Me._formato = formato

    Me._cant_recibida = cant_recibida

    Me._cant_solicitada = cant_solicitada

    End Sub

    End Class

    Public Class cap_recepcionImprenta

    Dim cl As New List(Of String)()

    Private Sub cap_recepcionImprenta_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    DataGridViewRecepcion.DataSource = cl

    End Sub

    Public Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click

    cl.Add(New LineaDelGrid("date", "str", "str", "int", "int"))

    End Sub

    End Class

     

    Agradeceria mucho su ayuda, soy nueva en .net.

    miércoles, 10 de septiembre de 2008 16:43
  • No sé si además habrá algún otro error, pero así a bote pronto observo que cl está declarado como List(Of String) en lugar de List(Of LineaDelGrid).

    Además de eso, el constructor de la clase LineaDelGrid está mal declarado. En C# lleva el mismo nombre que la clase, pero al traducirlo a VB es necesario cambiarlo por "Sub New".

     

     

    miércoles, 10 de septiembre de 2008 17:20
  • Estimado Alberto

     

    En lineas arriba pnes un ejemplo de como pasar datos de un textbox a un gridview, pero aun siguiendo los pasos que indicas no logro llenar el grid, por favo te adjunto mi codigo para que me digas donde esta fallando, y me puedas corregir, gracias por atencion, saludos.

     

    public partial class Form1 : Form

    {

    List<LineadelGrid> ColecciodeLineas = new List<LineadelGrid>();

     

    public Form1()

    {

    InitializeComponent();

    }

     

    private void Form1_Load(object sender, EventArgs e)

    {

    dg.DataSource = ColecciodeLineas;

    }

     

    class LineadelGrid

    {

    private string mvarnombre;

    public string nombre

    {

    get { return mvarnombre; }

    set { mvarnombre = value; }

    }

    public LineadelGrid(string mvarnombre)

    {

    this.nombre = mvarnombre;

    }

    }

     

    private void btn_Click(object sender, EventArgs e)

    {

    LineadelGrid lg = new LineadelGrid(txt.Text);

    ColecciodeLineas.Add(new LineadelGrid(this.txt.Text));

    }

    }

    jueves, 22 de enero de 2009 19:10
  • Si no me equivoco, tu problema reside en que sólo vinculas con el Grid la colección de líneas una vez al principio, en el Form_Load, y los datos de la colección los añades posteriormente, sin volver a vincularla. Esto funciona si lo haces con un DataTable, porque el datatable dispara un evento cada vez que le añades un registro, y el grid se recarga al recibir el evento. Pero con un List<> no se puede hacer lo mismo, porque no dispara ningún evento al cambiar sus datos, y por tanto el Grid no se entera.

     

    Así que tendrás que hacer las operaciones al revés: Primero cargar de datos la ColecciodeLineas y luego hacer el DataBind con el Grid.

     

     

    viernes, 23 de enero de 2009 8:12
  • Estimado Alberto,

     

    La verdad te pediria por favor si pudieras hacerme un ejemplo sencillo, el tema esta en ke hace mucho tiempo q no programo en c# y la verdad no recuerdo muy bien, solo kisiera si fuese un ejemplo sencillo con texbox, un boton y un grid, gracias de antemano, saludos

    viernes, 23 de enero de 2009 14:18
  • El mismo ejemplo que tienes está bien. Sólo tienes que cambiar de sitio una linea: En el Form_Load, donde tienes

        dg.DataSource = ColecciodeLineas;

    quítalo, y pon esa línea en el btn_Click, después de haber hecho ColecciodeLineas.Add(...).

     

    sábado, 24 de enero de 2009 9:14
  • Estupendo, si resulto lo que mencionaste, el grid ya esta cargando, pero esto solo sucede para una linea del grid, pero si kisiera ingresar datos consecutivos, como por ejemplo un listado de 10 nombres dentro del grid, que metodo pudiera aplicar???

    sábado, 24 de enero de 2009 13:34
  • Para cargar más líneas, lo único que hace falta es añadir los datos en la lista y volver a hacer un nuevo DataBind para enlazar de nuevo el grid con la lista ampliada.

     

    Tal como tienes el código del ejemplo no te funcionará porque cada vez que llamas al btn_Click vuelves a inicializar la lista (que ya estaba inicializada a nivel de Form) y añadirle una línea, con lo que siempre contiene una sola línea. Basta con que quites del método la línea de código que vacía la colección, y de esta manera irá creciendo cada vez que lo pulses:

     

    private void btn_Click(object sender, EventArgs e)

    {

    ColecciodeLineas.Add(new LineadelGrid(this.txt.Text));

    dg.DataSource = ColecciodeLineas;

    }

    domingo, 25 de enero de 2009 10:31
  •  

    Alberto, disculpa que sea tan pregunton en este aspecto, pero la verdad que necsito aydua, este es el codigo q tengo:

     

    private void Form1_Load(object sender, EventArgs e)

    {

    }

     

    class LineadelGrid

    {

    private string mvardato;

    public string Dato

    {

    get { return mvardato; }

    set { mvardato = value; }

    }

    public LineadelGrid(string mvardato)

    {

    this.Dato = mvardato;

    }

    }

     

    private void button1_Click(object sender, EventArgs e)

    {

    List<LineadelGrid> ColecciondeLineas = new List<LineadelGrid>();

    ColecciondeLineas.Add(new LineadelGrid(this.textBox1.Text));

    dataGridView1.DataSource = ColecciondeLineas;

    }

     

     

    Ahora si aun borrara la linea seleccionada y siguiendo lo que me comentas en mensajes anteriores, el grid se sigue llenando en una sola linea, es decir desde el unico textbox q tengo mando un primer valor y el grid lo recibe, ahora desde el mismo textbox mando un segundo dato, y en vez de hacer un lista del grid y colocarlo como segundo dato dentro del grid, pues borra el primer registro ingresado y coloca el segundo que coloque, es decir siempre sera un grid de un solo dato.

    lunes, 26 de enero de 2009 13:55
  • Si borras la línea seleccionada, sólo debe quedarte una única inicialización del List a nivel de formulario, por lo que sólo se tiene que vaciar en el momento de hacer el "new" del formulario. Por lo tanto, cada vez que se ejecute el Button1_Click se tiene que ejecutar el .Add y la lista tiene que ir creciendo. Si no es así, significa que algo de lo que estás haciendo no concuerda con lo que estamos discutiendo aquí. Verifícalo con el Depurador. Ejecuta el código paso a paso, y cerciórate de que cada vez que entras en el Button_Click la ColecciondeLineas conserva todos los datos que le metiste la última vez, y que después de ejecutar el .Add tiene una línea más, y por tanto al asignar la coleción al datasource del grid, el grid muestra una línea más. Si no es así, algo no está como crees que está. Aprovéchate de las herramientas del entorno de desarrollo de Visual Studio para buscar todas las referencias a tu objeto ColecciondeLineas, y comprueba en cuál de ellas está perdiendo el contenido.Apóyate, si es necesario, en el debugger para ejecutar el código paso a paso hasta que encuentres qué es lo que está sucediendo, En particular, ojo con los errores de ortografía, no vaya a ser que tengas dos variables con distinto nombre en lugar de una sola (en los primeros ejemplos pusiste ColecciodeLineas y en el último pone ColecciondeLineas).
    lunes, 26 de enero de 2009 14:30
  • holaaa que tal buen dia
    tengo un problema paso un archivo de texto a un richtexbox y ahora a esos datos les hice un procedimiento almacenado como visualizo esos datos en un datagridview estoy en visual studio 2008 haciendo aplicaciones con forms... si me pueden responder aqui o a mi correo lamanchavmfr@hotmail.com

    chidoone
    jueves, 05 de febrero de 2009 0:21
  • Amigo, una forma simple de hacer lo que vos decís es esta:
           
    private void button1_Click(object sender, EventArgs e)
            {
                dataGridView1.Rows.Add(textBox1.Text, textBox2.Text);
            }
    previamente agregue las columna al datagridview con el diseñador. simplemente botón derecho del mouse
    sobre el control, y seleccione "Agregar columnas". Luego en "texto del encabezado" le pones el nombre de los campos a cada
    columna y listo. Funciona bien.
    lunes, 09 de febrero de 2009 6:20
  • Muchas gracias Juan Manuel... eso es lo que ocupaba... Saludos desde Honduras...
    martes, 23 de junio de 2009 20:18
  • Oye estoy haciendo algo igual a lo que dices y tengo  un TextBox1.Text  y agego el codigo que dices y tengo un datagrid con el nombre de DataGrid6 y agrego el codigo que dices cambiando el nombre del grid ovbiamente y me marca error en el rows.  de casualidad sabes a que se debe??  este es mi codigo

     

    {

    DataGrid6.Rows.Add(TextBox1.Text);

    }

     

    marca el error en el Rows  espero puedas ayudarme

    jueves, 20 de mayo de 2010 16:10
  • Espero puedas responder pronto y disculpa por la molestia.

    jueves, 20 de mayo de 2010 16:16
  • si claro. Tienes que fijarte que le envies al datagridview.add tantos elementos como celdas tiene la fila.

    ejemplo: si el datagridview tiene columnas nombre y apellido. le envias datagrid.add(txtnombre.text,txtapellido.text) si le mandas un solo elemento da error.

    Para enviar un solo elemento le debes decir Datagridview1.Rows[Nro de fila].Cells[nro de columna].value=txtNombre.text

    dgAlumnos.Rows["0"].Cells["Nombre"].Value=txtNombre.text

    jueves, 20 de mayo de 2010 18:48
  • Oye  gracias por responder  mira  pude hacerlo de este modo espero les sirva a los que andan empezando como yo saludos

    El codgigo se pega dentro del boton de guardar y obviow primero se crean los textbox que ahi aparecen y el datagrid

     

     

     

    try

    {

     

     

    DataGrid6.AutoGenerateColumns =

    true;

     

    System.Data.

    DataTable dtTabla=new System.Data.DataTable();

    dtTabla.Columns.Add(

    "Articulo");

    dtTabla.Columns.Add(

    "Descripcion");

    dtTabla.Columns.Add(

    "Unidad");

    dtTabla.Columns.Add(

    "Cantidad");

    dtTabla.Columns.Add(

    "Precio_Unitario");

    dtTabla.Columns.Add(

    "Importe");

     

     

    if (Session["tablaMadera"] != null)

    {

     

     

    //txtArticuloMadera.Text = txtArticuloMadera.Text + 1;

    dtTabla = (System.Data.

    DataTable)Session["tablaMadera"];

     

    DataRow drFila = dtTabla.NewRow();

    drFila[

    "Articulo"] = dtTabla.Rows.Count+1;

    drFila[

    "Descripcion"] = TextBox1.Text;

    drFila[

    "Unidad"] = lblUnidadMadera.Text;

    drFila[

    "Cantidad"] = txCantidadMadera.Text;

    drFila[

    "Precio_Unitario"] = lblPUMadera.Text;

    drFila[

    "Importe"] = lblImporteMadera.Text;

    dtTabla.Rows.Add(drFila);

    DataGrid6.DataSource = dtTabla;

     

    }

     

    else

    {

     

     

     

    DataRow drFila = dtTabla.NewRow();

    drFila[

    "Articulo"] = 1;

    drFila[

    "Descripcion"] = TextBox1.Text;

    drFila[

    "Unidad"] = lblUnidadMadera.Text;

    drFila[

    "Cantidad"] = txCantidadMadera.Text;

    drFila[

    "Precio_Unitario"] = lblPUMadera.Text;

    drFila[

    "Importe"] = lblImporteMadera.Text;

    dtTabla.Rows.Add(drFila);

    DataGrid6.DataSource = dtTabla;

     

    }

    Session[

    "tablaMadera"] = dtTabla;

     

    DataGrid6.DataBind();

     

    }

     

    catch (Exception ex)

    {

     

    string Error = ex.Message.ToString();

    }

    • Propuesto como respuesta Alex Sanyago jueves, 20 de mayo de 2010 23:39
    jueves, 20 de mayo de 2010 23:39
  • Buen día Alberto, tengo el siguiente código, me indica que me excedo de argumentosen mi lineagrid, podrías ayudarme por favor?, corrigeme.

    GRACIAS

     

    Imports System.Data
    Imports System.Data.SqlClient


    Public Class lineagrid

        Private albumid As Integer
        Public Property _albumid() As Integer
            Get
                Return albumid
            End Get
            Set(ByVal value As Integer)
                albumid = value
            End Set
        End Property
        Private title As String
        Public Property _title() As String
            Get
                Return title
            End Get
            Set(ByVal value As String)
                value = title
            End Set
        End Property

        Public Sub grid(ByVal albumid As Integer, ByVal title As String)
            Me._albumid = albumid
            Me._title = title
        End Sub
    End Class

    Public Class Form1
        Dim d As New List(Of lineagrid)()
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.DataGridView1.DataSource = d
        End Sub

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            d.Add(New lineagrid("int", "string"))

        End Sub
    End Class

    martes, 23 de noviembre de 2010 14:42
  • O.K., vamos por pasos:

     

    1) La clase para contener os datos de una linea:

     

     

    Code Snippet

    class LineaDelGrid

    {

        private string nombre;

        public string Nombre { get { return nombre; } set { nombre=value; } }

        private string apellido;

        public string Apellido{ get { return apellido; } set { apellido=value; } }

        private string edad;

        public int Edad{ get { return edad; } set { edad=value; } }

        public LineaDelGrid(string nombre, string apellido, int edad)

        {

            this,Nombre=nombre;

            this.Apellido=apellido;

            this.Edad=edad;

        }

    }

     

     

     

    La clase anterior la puedes añadir como un archivo independiente al proyecto, o puedes pegar ese mismo código dentro del mismo fichero fuente del formulario que estás diseñando.

     

    2) La colección para contener las lineas de grid. Esta tienes que declararla dentro de la clase de tu formulario:

     

     

    Code Snippet

    List ColeccionDeLineas = new List();

     

     

     

    3) El enlace con el GridView. Este puedes ponerlo, por ejemplo, dentro del Form_Load:

     

     

    Code Snippet

    DataGirdView1.DataSource = ColeccionDeLineas;

     

     

     

    4) Añadir una linea nueva. Esto lo metes en el Click del botón que tiene que pasar los textboxes al DataGridView:

     

     

    Code Snippet

    LineaDelGrid lg = new LineaDelGrid(textBoxNombre.Text, textBoxApellido.Text, int.Parse(textBoxEdad.Text));

    ColeccionDeLineas.Add(lg);

     

     

     

     

    buenas tardes Sr. Alberto tengo un problema con estos pasos.

    ya hice todos los pasos que se escribieron solo que me sale un error ya en el codigo del boton,

    me sale este error:

    LineaDelGrid" no contiene un constructor que tome argumentos '4'

     

    es la unica linea que me sale error.

    espero su ayuda muchas gracias

     

     

    viernes, 04 de marzo de 2011 20:18
  • Hola amigo...

    Si te fijas en el constructor de la clase LineaDelGrid notaras que tiene 3 parámetros:

     

    public LineaDelGrid(string nombre, string apellido, int edad)

        {

            this,Nombre=nombre;

            this.Apellido=apellido;

            this.Edad=edad;

        }

    }

     

    por lo tanto debes asegurarte de pasarle solo 3 parámetros al constructor de la clase, que concuerden con los definidos.. o si así lo deseas puedes hacer una sobrecarga del constructor de la clase LineaDelgrid para pasarle 4 parámetros, o 3 parámetros diferentes (de diferente tipo a los ya declarados). Saludos

     

     

    viernes, 04 de marzo de 2011 20:35
  • Puedes  compartir tu ejemplo.. gracias
    sábado, 04 de junio de 2011 15:15
  • Hola buenas tardes,

    Yo se que éste post ya lleva un tiempo, pero he seguido los pasos como los indican y no me agrega la linea, no se si será que tengo algo malo en el gridview, él código que uso es:

     class LineaDelGrid
        {
            private string parte;
            public string Parte { get { return parte; } set { parte = value; } }
            private string defecto;
            public string Defecto { get { return defecto; } set { defecto = value; } }
            private string operacion;
            public string Operacion { get { return operacion; } set { operacion = value; } }
    
             public LineaDelGrid(string parte, string defecto, string operacion)
             {
              Parte=parte;
              Defecto=defecto;
              Operacion=operacion;
            }
        }
    
         protected void btnAceptar_Click(object sender, EventArgs e)
         {
             LineaDelGrid lg = new LineaDelGrid(this.cboPartes.SelectedValue, this.cboDefectos.SelectedValue, this.cboOperaciones.SelectedValue);
             ColeccionLineas.Add(lg);
             this.GridView1.DataSource = ColeccionLineas;
    
         }

    y en la clase tengo:

    List<LineaDelGrid> ColeccionLineas=new List<LineaDelGrid>();

    no se si tengo algún error, pero no me agrega la linea al gridview.

    Gracias por la ayuda

     

    miércoles, 31 de octubre de 2012 17:32
  • Si tienes prolemas utilizando esos metodos, porque mejor no insertas tus datos en tu base de datos y luego recuperas la informacion en tu datagridview..

    Si mi respuesta te ha ayudado a resolver tus problemas, Selecciona "Proponer como respuesta"

    Blog
    J.Joaquin

    miércoles, 31 de octubre de 2012 17:48
  • Es que necesito guardarlo en la base de datos al final, cuando el usuario no agregue más lineas, es que el procedimiento es parecido al de una factura, donde en éste caso la información de los combos se compararía a los productos que llevaria determinado usuario,

    miércoles, 31 de octubre de 2012 18:35