Inicio > ASP .Net, Visual Studio 2005, Visual Studio 2008 > Insertar Registros en un GridView

Insertar Registros en un GridView

Martes, 23 de septiembre de 2008 Dejar un comentario Ir a comentarios

Desarrollando con ASP .Net, muchas veces he tenido la necesidad de agregar nuevos registros directamente en un GridView y claro, buscando un poco en internet podemos encontrar temas al respecto; aún así, no había encontrado una forma mas o menos humana de agregar datos directamente en el GridView cuando no hay registros que mostrar. Para ser más claros, si queremos agregar datos directamente sobre el GridView bastaría con personalizar el FooterRow de mi GridView para conseguirlo, pero si el GridView está vacio no se puede visualizar ni siquiera el FooterRow, de manera que agregar registros directamente sobre el GridView ya no es posible.

En este artículo les voy a proponer una forma de agregar registros directamente sobre el GridView así éste se encuentre sin registros. Este ejemplo es bastante simple y solo utilizaré dos campos: Nombre y Apellido, ya luego Uds. pueden modificarlo, mejorarlo y adaptarlo a sus necesidades. Como siempre, pueden descargar el código completo, al final del artículo.

El resultado debe ser mas o menos como se muestra en la siguiente imágen:

Ejemplo Agregar Filas a GridView

Para conseguir esto se deben realizar los siguientes pasos:

Primero, crear una clase base llamada llamada (en este caso) Registro que contendrá 3 propiedades: Nombre, Apellido y una “especial” llamada InitialSender de tipo object, está última aunque no es necesaria, se utilizará para contener al objeto que inicia el evento de adicionar registros la primera vez.

Segundo, crear un Control Web con dos TextBox y un ImageButton, para que quede como se muestra en la imágen anterior con el número 1. Este control además, tendrá un evento creado con el delegado genérico EventHandler<TEventArgs> de nombre Agregar.Al hacer clic en el ImageButton se instanciará un objeto de la clase Registro y asignaremos los valores para sus propiedades; el constructor de esta clase recibe como parámetro el objeto ImageButton que inició el evento; luego de ello, se invocará al evento Agregar del control web que hemos creado pasándole como parámetros la instancia del objeto registro creada y los argumentos iniciales. mas o menos como se muestra en el siguiente ejemplo:

public partial class AgregarRegistro : System.Web.UI.UserControl
{
public event EventHandler<ImageClickEventArgs> Agregar;

protected void ibtAgregar_Click(object sender, ImageClickEventArgs e)
{
Registro reg = new Registro(sender);

reg.Nombre = txtNombre.Text;
reg.Apellidos = txtApellidos.Text;

Agregar(reg, e);
}
}

Tercero; una vez hecho los pasos anteriores en la página web aspx que utilizaré para agregar mis datos agregaré un GridView y lo diseñaré como se muestra en la siguiente imágen:

Código para Agregar Filas en un GridView

Nótese que aquí la propiedad ShowFooter de la grilla esta en True y que cada columna es un ItemTemplate, lo cual me permite personalizar además, el pie de página. La etiqueta <EmptyDataTemplate> se utiliza para agregar un contenido que se visualizará cuando no hayan registros en el GridView, de manera que será allí donde yo agregue mi control web creado. Nótese también que el evento OnAgregar de mi control invoca al mismo método que el ImageButton del pie de mi GridView, con ello me aseguro de escribir un solo método para ambos casos.

Pues básicamente eso es todo lo necesario, para poder efectuar esta operación, claro, de hecho que en cada caso se necesitará un nivel de personalización mayor pero al menos ya se tiene una alternativa que puede ser de ayuda si se les presenta este caso.

Descargar ejemplo Insertar registros en GridView.

Espero que les sea de utilidad.

 

  1. Martes, 11 de noviembre de 2008 a las 15:07 | #1

    xevere buen ejemplo!!

  2. Jote
    Viernes, 21 de noviembre de 2008 a las 17:13 | #2

    excelente, solo q lo tendrias en VB.net !
    sldos

  3. jonathan
    Viernes, 6 de marzo de 2009 a las 15:40 | #3

    buen aporte, pero solo tengo una duda.
    ¿Cómo se hace para insertarlo en una Base de Datos Sql Server?

  4. Daniel
    Viernes, 17 de abril de 2009 a las 19:57 | #4

    Exelente Post me ha servido muchisimo, y ademas justo lo que necesito en estos momentos. Muchas Gracias.

  5. juan carlos
    Jueves, 27 de agosto de 2009 a las 01:32 | #5

    Una pregunta ahora como puedo guardar esos datos que estan en el gridview en mi mi tabla de sql, gracias

  6. kat
    Jueves, 17 de diciembre de 2009 a las 18:43 | #6

    vb?

  7. rodrigo
    Viernes, 22 de enero de 2010 a las 18:45 | #7

    Que buen ejemplo, pero como hago para guardar estos datos, del gridview a un BD SQL…

  8. Gamaliel
    Jueves, 25 de febrero de 2010 a las 19:28 | #8

    Gracias por el aporte, pero no me funciona en un asp:UPdatePanel me dice que la ibtAgregar_Click no es miemro de Default.aspx

  9. Jorge
    Viernes, 27 de agosto de 2010 a las 15:19 | #9

    Por fa necesito ayuda urgente, como lleno un griview en asp.net con los datos de dos textBox?

  10. Ulises
    Martes, 30 de noviembre de 2010 a las 22:55 | #10

    Gracias amigo, suerte en todo.

  11. hesvinc
    Viernes, 10 de diciembre de 2010 a las 08:10 | #11

    thanks

  12. cesver
    Martes, 22 de febrero de 2011 a las 21:44 | #12

    Gracias ….

  13. José
    Viernes, 3 de junio de 2011 a las 00:02 | #13

    En página *.asp (v. studio .net 2010) tengo un gridview y en un botón (evento click) un código que hace una consulta a una tabla de una base de datos en sql server 2008. Puedo llevar el resultado de la consulta al gridview sin ningún problema.

    Resulta que necesito ubicar en el mismo gridview, un checkbox para que usuario pueda hacer click y seleccionar el registro. Esta checkbox no guarda ningún vínculo con la base de datos, solo se usa temporalmente para que los registros que se encuentren seleccionados puedan ser leídos para su correspondiente modificación que afectan a la misma y/o otra tabla.

    Preguntas:

    Mediante programación necesito ubicar el checkbox y el usuario pueda elegir.

    Mediante programación como puedo crear filas en gidview vinculados o sin vínculos a un dataset o datable.

    Mediante programación como se puede llamar: GridView1_RowCreated(ByVal sender As Object, ByVal e As GridViewRowEventArgs)

    Mediante programación como se puede llamar: Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs).

    Email: dimurve@hotmail.com

  14. Alexander Quezada Chavez
    Sábado, 4 de junio de 2011 a las 04:34 | #14

    Profesor Hanz!!!! como ha estado, hace tiempo que no sabia nada de usted,, me sorprendo encontrarlo por aca,,, no se si me recordará fui alumno suyo en CEPEA, en el 2004, en ese tiempo hacia practicas tambien con el profesor Huaman, recuerdo esos dias donde recien estaba aprendiendo asp para hacer el primer aplicativo web para los alumnos y docentes en su registro de notas… usted nos enseñaba y una vez dijo ante todo el salon que a mi no me jalaria porque en las practicas hacia mucho de lo que usted enseñaba, jajajaja, pero si que me pondria 11 jajaja…ahora justo estaba viendo este aporte, pues estoy programando mi tesis y estoy que la sufro, convalide en la UPC y ya termino en agosto, pero el tema aca es que estoy queriendo pasarlo a vb.net pero se me complican algunas declaraciones como el de la clase “registro”… como podría declararlo correctamente (esto referenciado punto1)…saludos

  15. Alexander Quezada Chavez
    Sábado, 4 de junio de 2011 a las 04:46 | #15

    ya encontre la clase ejejje… ahora voy a pasarlo a vb.net espero no complicarme… tengo 2 meses para retar las leyes fisicas de la programación,, sino jalo el curso y no me graduo,,, hacer la funcionalidad de un http://www.wix.com pero todo en vb.net con ajax dentro de mi proyecto de tesis,… mis ideas me han metido en problemas…pero veamos que sale…

  16. Alexander Quezada Chavez
    Sábado, 4 de junio de 2011 a las 05:03 | #16

    Profesor como seria esto en vb.net?

    {
    get { return nombre; }
    set { nombre = value; }
    }

  17. Alexander Quezada Chavez
    Sábado, 4 de junio de 2011 a las 05:43 | #17

    profe disculpe tambien como seria esto en vb.net

    ((Registro)sender).Apellidos??

  18. su deposu
    Viernes, 8 de julio de 2011 a las 19:14 | #18

    ctamente en el GridView cuando no hay registros que mostrar. Para ser más claros, si queremos agregar datos directamente sobre el GridView bastaría con personalizar el FooterRow de mi GridView para conseguirlo, pero si el GridView está vacio no se puede visualizar ni siquiera el FooterRow, de manera que

    http://www.sudeposu.cc http://www.sudeposu.cc

  19. su deposu
    Jueves, 14 de julio de 2011 a las 09:50 | #19

    profe disculpe tambien como seria esto en vb.net

    ((Registro)sender).Apellidos??

  1. Sin trackbacks aún.