Aquí encontrarás todo lo relacionado a la tecnología, computación, informática y demás. Enterate de las noticias del momento en cuanto a tecnología se refiere.





Crear columnas dinámicas en gridView de .NET


Me he topado con un problema, el cual era generar un gridView de manera dinámica desde el codebehind con C#. El problema no fué crear el gridView como tal sino la creación de las columnas personalizadas.

Googleando un poco me encontré con diferentes tutoriales, en los cuales saqué varias ideas, la manera de resolverlo fué la siguiente:

//Creamos nuestro gridView
GridView gv1 = new GridView();
//Llenamos nuestro gridView mediante un DataSet previamente creado.
gv1.DataSource = ds;
//Ponemos la propiedad AutoGenerateColumns en False,
//ya que nosotros las crearemos
gv1.AutoGenerateColumns = false;
//Creamos las columnas dinámicamente,
//en mi caso tenemos una lista con las columnas.
 for (int i = 0; i < report.FieldsInfo.Count; i++)
    {
      //Objeto Columna:
       BoundField ColumnBound;
      //Crear Columna:
       ColumnBound = new BoundField();
       ColumnBound.DataField = report.FieldsInfo[i].DATAFIELD.Trim();
       ColumnBound.HeaderText = report.FieldsInfo[i].Title1.Trim();
       gv1.Columns.Add(ColumnBound);
    }

Espero que les sea de utilidad, estaré posteando algunas soluciones a problemas no frecuentes.

Post Relacionados:


Búsquedas hacia éste artículo:


2 Comentarios »

RSS feed para los comentarios de esta entrada. TrackBack URI

  1. y el codigo del lado del lado del aspx lo dejas como?.. creas solo el grid vacio sin columnas?

    salu2

    Comentario por chow — July 25, 2011 #

  2. Me ha sido de gran utilidad pero ahora deseo agregar un objeto como un linkbutton o cun ChekBox a esa grilla, igualmente creado desde C#, le agradecería si sabe como hacerlo ya que la verdad he llegado a la creacion del TemplateField desde el mismo C#, luego llamar el ItemTemplate pero no he logrado agregar el control que previamente cree. Algo asi:

    int cantcol = dts.Tables[0].Columns.Count;
    for (int i = 0; i < cantcol; i++)
    {
    BoundField ColumBound;
    ColumBound = new BoundField();
    ColumBound.DataField = dts.Tables[0].Columns[i].ToString();//dts.Tables[0].Rows[0][i].ToString();
    if (dts.Tables[0].Columns[i].ToString() == "nombres")
    {

    LinkButton linkbtn = new LinkButton();
    linkbtn.Text = "linkbot de prueba2";
    linkbtn.ID = "lnktest";
    linkbtn.CommandArgument = "Comando";
    linkbtn.CommandName = "cmd name";
    linkbtn.Command += new CommandEventHandler(lnkbtncommand);
    TemplateField tempfield = new TemplateField();
    tempfield.InsertItemTemplate.InstantiateIn(linkbtn);
    gdv.Columns.Add(tempfield);
    //tempfield.ItemTemplate.InstantiateIn = ;

    }

    Comentario por JAM — January 19, 2012 #

Dejar un comentario

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Todos los derechos reservados. Tecnologia.