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?

  1. Sin trackbacks aún.