Insertar Registros en un GridView
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:

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:

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.

xevere buen ejemplo!!
excelente, solo q lo tendrias en VB.net !
sldos
buen aporte, pero solo tengo una duda.
¿Cómo se hace para insertarlo en una Base de Datos Sql Server?
Exelente Post me ha servido muchisimo, y ademas justo lo que necesito en estos momentos. Muchas Gracias.
Una pregunta ahora como puedo guardar esos datos que estan en el gridview en mi mi tabla de sql, gracias
vb?
Que buen ejemplo, pero como hago para guardar estos datos, del gridview a un BD SQL…
Gracias por el aporte, pero no me funciona en un asp:UPdatePanel me dice que la ibtAgregar_Click no es miemro de Default.aspx
Por fa necesito ayuda urgente, como lleno un griview en asp.net con los datos de dos textBox?
Gracias amigo, suerte en todo.
thanks
Gracias ….
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
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
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…
Profesor como seria esto en vb.net?
{
get { return nombre; }
set { nombre = value; }
}
profe disculpe tambien como seria esto en vb.net
((Registro)sender).Apellidos??
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
profe disculpe tambien como seria esto en vb.net
((Registro)sender).Apellidos??