none
pasar una lista a un datatable RRS feed

  • Pregunta

  • hola :

    queria saber si es posible y como se puede hacer para pasar el contenido de una lista generica a un datatable , para luego dicho datatable bindearlo a un gridview. Ademas necesito que ese gridview sea editable .

    desde ya gracias 

    miércoles, 29 de junio de 2016 12:34

Respuestas

  • hola

    no necesitas pasar la lista a datatable para bindearlo a un gridview, podrias asignarlo directamente

    si usas

    gridview1.DataSource = lista;
    
    gridView1.DataBind();


    deberias ver los datos que esa lista defina

    eso si dos puntos importantes

    - la lista debe ser de una clase que tu definas

    - debes definir propiedades en esa clase

    >>necesito que ese gridview sea editable .

    la edicion la realizas a la row y el cambio que apliques no tiene que ver con la lista

    si encesitas hacerlo en memoria la lista deberias conservarla en un objeto Session

    [ASP.NET][GridView] Edición usando DropDownList

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 29 de junio de 2016 13:01
  • hola ciclon25,

    Estás cargando la lista desde una base de datos? SI es así podrías cargar directamente los datos de la BD a un datatable y luego al gridview

      DataTable tabla= new DataTable();
    
     //Aquí Cargar la tabla y luego le pasas al gridview
    
    
       GridView1.DataSource = tabla;
    
       GridView1.DataBind();


    Javier

    miércoles, 29 de junio de 2016 13:15
  • gracias por la rta:

    hice lo siguente:

    en el formualrio donde esta el gridview puse este codigo :

       protected void Page_Load(object sender, EventArgs e)
            {
                List<Recaudacion> lolista = new List<Recaudacion>();
                lolista = this.GenerarLista();
                Grvrecaudacion.DataSource = lolista;
                Grvrecaudacion.DataBind();

            }

             public List<Recaudacion> GenerarLista()
            {

                List<Recaudacion> lista = new List<Recaudacion>();
                Recaudacion item1 = new Recaudacion("Unidad1", 10, DateTime.Now, "Chofer1", "Turno1");
                Recaudacion item2 = new Recaudacion("Unidad2", 20, DateTime.Now, "Chofer2", "Turno2");
                Recaudacion item3 = new Recaudacion("Unidad3", 10, DateTime.Now, "Chofer3", "Turno3");
                Recaudacion item4 = new Recaudacion("Unidad4", 20, DateTime.Now, "Chofer4", "Turno4");
                lista.Add(item1);
                lista.Add(item2);
                lista.Add(item3);
                lista.Add(item4);
                return lista;

            }

    la clase recaudacion esta definida de esta manera :

             

    public class Recaudacion
        {
             private string unidad { get; set; }
             private DateTime? fecha { get; set; }
             private string turno { get; set; }
             private string chofer { get; set; }
             private double importe { get; set; }

            public Recaudacion( string tcUnidad, double tnImporte, DateTime tdFecha, string tcChofer, string tcturno)
            {
                this.importe = tnImporte;
                this.chofer = tcChofer;
                this.fecha = tdFecha;
                this.unidad = tcUnidad;
                this.turno = tcturno;
            }
     }

    en el gridview defini  4 columnas .    cuando ejecuto el formualrio veo el gridview vacio con los encabezados que defini , pero con 4 filas vacias ( es la cantidad de elementos de la lista ).  cada columna la defini del tipo boundfield 

    la pregunat es : la causa de que no vea que contiene cada celda es porque en cad acolumna no defini la propiedad datafield ?? en caso de ser eso necesito saber como se define en el caso de que cada campo es una proiedad de una lista . gracias por la paciencia !

      
    miércoles, 29 de junio de 2016 23:20

Todas las respuestas

  • hola

    no necesitas pasar la lista a datatable para bindearlo a un gridview, podrias asignarlo directamente

    si usas

    gridview1.DataSource = lista;
    
    gridView1.DataBind();


    deberias ver los datos que esa lista defina

    eso si dos puntos importantes

    - la lista debe ser de una clase que tu definas

    - debes definir propiedades en esa clase

    >>necesito que ese gridview sea editable .

    la edicion la realizas a la row y el cambio que apliques no tiene que ver con la lista

    si encesitas hacerlo en memoria la lista deberias conservarla en un objeto Session

    [ASP.NET][GridView] Edición usando DropDownList

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 29 de junio de 2016 13:01
  • hola ciclon25,

    Estás cargando la lista desde una base de datos? SI es así podrías cargar directamente los datos de la BD a un datatable y luego al gridview

      DataTable tabla= new DataTable();
    
     //Aquí Cargar la tabla y luego le pasas al gridview
    
    
       GridView1.DataSource = tabla;
    
       GridView1.DataBind();


    Javier

    miércoles, 29 de junio de 2016 13:15
  • gracias por la rta:

    hice lo siguente:

    en el formualrio donde esta el gridview puse este codigo :

       protected void Page_Load(object sender, EventArgs e)
            {
                List<Recaudacion> lolista = new List<Recaudacion>();
                lolista = this.GenerarLista();
                Grvrecaudacion.DataSource = lolista;
                Grvrecaudacion.DataBind();

            }

             public List<Recaudacion> GenerarLista()
            {

                List<Recaudacion> lista = new List<Recaudacion>();
                Recaudacion item1 = new Recaudacion("Unidad1", 10, DateTime.Now, "Chofer1", "Turno1");
                Recaudacion item2 = new Recaudacion("Unidad2", 20, DateTime.Now, "Chofer2", "Turno2");
                Recaudacion item3 = new Recaudacion("Unidad3", 10, DateTime.Now, "Chofer3", "Turno3");
                Recaudacion item4 = new Recaudacion("Unidad4", 20, DateTime.Now, "Chofer4", "Turno4");
                lista.Add(item1);
                lista.Add(item2);
                lista.Add(item3);
                lista.Add(item4);
                return lista;

            }

    la clase recaudacion esta definida de esta manera :

             

    public class Recaudacion
        {
             private string unidad { get; set; }
             private DateTime? fecha { get; set; }
             private string turno { get; set; }
             private string chofer { get; set; }
             private double importe { get; set; }

            public Recaudacion( string tcUnidad, double tnImporte, DateTime tdFecha, string tcChofer, string tcturno)
            {
                this.importe = tnImporte;
                this.chofer = tcChofer;
                this.fecha = tdFecha;
                this.unidad = tcUnidad;
                this.turno = tcturno;
            }
     }

    en el gridview defini  4 columnas .    cuando ejecuto el formualrio veo el gridview vacio con los encabezados que defini , pero con 4 filas vacias ( es la cantidad de elementos de la lista ).  cada columna la defini del tipo boundfield 

    la pregunat es : la causa de que no vea que contiene cada celda es porque en cad acolumna no defini la propiedad datafield ?? en caso de ser eso necesito saber como se define en el caso de que cada campo es una proiedad de una lista . gracias por la paciencia !

      
    miércoles, 29 de junio de 2016 23:20