Colabora .NET

Personalizando GridView en Visual Web Developer 2005 Parte II

Insertando y Editando Datos en GridView 2005

Fecha: 27/Sep/2006 (21 de Septiembre de 2006)
Autor: Giovanni Cuadra  - giovanni_cuadra@hotmail.com

Nicasoft

!!!Tecnología de la Programación!!!

 

Managua, Nicaragua.


Introducción

Continuando con la segunda parte y final del artículo titulado Personalizando GridView en Visual Web Developer 2005. Expondremos los métodos de actualización y eliminación de datos con el objetivo de completar la funcionalidad de los tres elementos básicos que son fundamentales en la edición de datos en línea mediante una página ASP.NET

En esta segunda entrega y final, trataremos de enfocarnos en la forma de como es factible implementarles funcionalidades de mucha mayor importancia aun control de servidor tan útil como el Web Server Grid de ASP.NET.

Retomamos también que el adaptar controles de usuarios a tareas especificas de una aplicación, tiene mayor énfasis en el desarrollo de aplicaciones escalables de alto rendimiento, ya que esto permite el uso de elementos propios en un producto terminado, reutilización de la mayor parte del código, una integración mayor de objetos de un mismo proveedor, hay menos posibilidad que sin la utilización de controles de terceros la aplicación no tenga fallo alguno, aunque muchos controles de terceros simplifican sobre manera muchas tareas de programación que son muy complicadas de llevar a la realidad. Finalmente todo dependerá de las necesidades del producto final que este demande para obtener un mejor rendimiento en su utilización.

Este artículo trata básicamente en proporcionarle al GridView una mejor utilidad en aplicaciones de Web escalables. En esta última presentación veremos de manera este importante control de Web permitiéndole al usuario final obtener una facilidad de manipular datos sin costo alguno.

Primeros Pasos

En el menú archivo de Visual Studio 2005 hacer clic donde dice abrir proyecto Web. Luego seleccionar la carpeta o directorio donde se encuentra almacenada la aplicación. A continuación muestro la opción de menú y el formulario del asistente y un ejemplo de como poder ubicar la carpeta de la aplicación:

Figura 1.0 Abrir Proyecto de Web

Figura 2.0 Asistente para Ubicar Proyecto Web

Una vez recuperado el proyecto, será necesario abrir el código de la aplicación y proceder a complementar las nuevas partes del código que permitirán obtener totalmente la funcionalidad de una aplicación editora de datos en el Web. El archivo que se requiere modificar es Default.aspx.vb ya que es un proyecto desarrollado con código separado. El método que se modificara con la nueva codificación será ItemCommand del objeto de servidor WebGrid de ASP.NET. Para ir al artículo anterior hacer clic aquí.

Implementando una solución con Microsoft Visual Web Developer 2005

A continuación detallo los requerimientos necesarios para crear el proyecto, desarrollado en Visual Web Developer 2005, Edición Profesional:

  • Microsoft SQL Server 2000

  • Microsoft Visual Studio 2005

  • Microsoft Windows Xp SP 2.0

  • IIS 5.0 Instalado (No requerido).

  • Computadora Petium o superior.

  • Memoria RAM 128 o superior.

  • Monitor de 15'' o superior.

El código:

A continuación muestro la sección del código, por el cual en esta última entrega es funcional para insertar, modificar y eliminar datos desde una base de dato SQL Server 2000.

Imports System.Data
Imports System.Data.SqlClient
''' <summary>
''' Personalizando el Web GridView 2005.
''' Código compatible con Web DataGrid.
''' </summary>
''' <remarks></remarks>
Partial Class _Default
 Inherits System.Web.UI.Page
 Dim strConnection As String = "User ID=sa;Initial Catalog=Northwind;Data Source=SERVER"
 ''' <summary>
 ''' El procedimiento BindGridView permite cargar los datos de
 '''  la tabla empleados.
 ''' </summary>
 ''' <remarks></remarks>
 Private Sub BindGridView()
  Dim cntDB As New SqlConnection(strConnection)
  Dim DA_Empleados As New SqlDataAdapter("SELECT employeeid," & _
  "firstname,lastname FROM employees", cntDB)
  Dim DAT_Empleados As New DataSet()

  DAT_Empleados.Clear()
  DA_Empleados.Fill(DAT_Empleados, "employees")

  DataGrid1.DataSource = DAT_Empleados
  DataGrid1.DataBind()
 End Sub
 ''' <summary>
 ''' Muestra el GridView al cargar la página.
 ''' </summary>
 ''' <param name="sender"></param>
 ''' <param name="e"></param>
 ''' <remarks></remarks>
 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
  Handles Me.Load
  If Not Page.IsPostBack Then
   Call BindGridView()
  End If
 End Sub
 ''' <summary>
 ''' El método ItemCommand permite identificar los controles que 
 ''' se encuentran incrustrados
 ''' en el Web Grid personalizado.
 ''' El método FindControl permite indentificar los dos controles de
 '''  tipo TextBox que se utilizaran
 ''' con el objetivo de insertar los datos desde el Grid.
 ''' </summary>
 ''' <param name="source"></param>
 ''' <param name="e"></param>
 ''' <remarks></remarks>
 Protected Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e _
  As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand

  '--Insertar datos
  If e.CommandName = "Insert" Then
   Dim cntDB As New SqlConnection(strConnection)
   Dim tNombres As TextBox = e.Item.FindControl("txtNombres")
   Dim tApellidos As TextBox = e.Item.FindControl("txtApellidos")
   cntDB.Open()

   Dim cmdInsert As New SqlCommand("insert into employees(firstname,lastname) " & _
   "values('" & tNombres.Text & "','" & tApellidos.Text & "')", cntDB)
   cmdInsert.ExecuteNonQuery()

   cntDB.Close()
   Call BindGridView()
  End If

  '--Actualizar datos.
  If e.CommandName = "Update" Then
   Dim cntDB As New SqlConnection(strConnection)
   Dim tNombres As TextBox = e.Item.FindControl("txtNombres1")
   Dim tApellidos As TextBox = e.Item.FindControl("txtApellidos1")
   Dim lIDEmpleado As Label = e.Item.FindControl("lblIDEmpleado")
   cntDB.Open()

   Dim cmdUpdate As New SqlCommand("update employees " & _
   "set firstname='" & tNombres.Text & "',lastname='" & _
   tApellidos.Text & "' where employeeid=" & lIDEmpleado.Text, cntDB)
   cmdUpdate.ExecuteNonQuery()

   cntDB.Close()
   Call BindGridView()
  End If

  '--Eliminar datos.
  If e.CommandName = "Delete" Then
   Dim cntDB As New SqlConnection(strConnection)
   Dim lIDEmpleado As Label = e.Item.FindControl("lblIDEmpleado")
   cntDB.Open()

   Dim cmdUpdate As New SqlCommand("delete from employees " & _
   " where employeeid=" & lIDEmpleado.Text, cntDB)
   cmdUpdate.ExecuteNonQuery()

   cntDB.Close()
   Call BindGridView()
  End If

 End Sub
End Class

Explicando el código

El código anterior describe dos nuevos elementos dentro del método ItemCommand, los nombres de comandos o CommandName Update y Delete. Estos dos nuevos elementos de código permiten dos funciones básicas. El primero ejecutar una consulta de actualización que permite modificar registro ya existentes dentro de la base de datos. El segundo ejecuta una consulta de eliminación de datos. Ambas consultas procesan una orden de filtro mediante el campo employeeid que delimita el registro a modificar o eliminar.

Los dos nuevos botones dentro del grid que permiten modificar o eliminar fueron creados mediante el asistente de propiedades del control, en la sección columnas, elemento botones de columnas.

Conclusiones

En esta última entrega hemos presentado los elementos fundamentales para brindarle mayor funcionalidad al control de servidor WebGrid de ASP.NET. Pero no solo estos elementos básicos es posible incorporarle a un control de versátil como WebGrid, ya que es posible insertarle controles como los cuadros combinados, botones de radio, checkbox, image controls etc.

Para implementarle otras nuevas características al WebGrid, es recomendable visitar el MSDN de Microsoft, ya que ahí se encuentra documentación acerca de el uso de métodos, propiedades y eventos.

Con esta colaboración obtenemos el mismo efecto del Grid de Visual Basic 2005, ya que con estas características que se han implementado podemos insertar en el último registro datos, actualizamos y de inmediato el servidor nos responde a la petición así como también en la eliminación de una fila o registro.

Una vez más recomiendo visitar MSDN de Microsoft, ya que ahí se encuentra toda la documentación necesaria. Y también les recomiendo entrar al nuevo sitio en la Web http://www.nicasoft.com.ni. Este es el sitio oficial de Nicasoft, donde se podrá encontrar manuales, sitios de descarga, artículos y más.


Espacios de nombres usados en el código de este artículo:

System.Data
System.Data.SqlClient
 


Código de ejemplo (ZIP):

 

Fichero con el código de ejemplo: gcuadra_GridViewII.zip - 5 KB

(MD5 checksum: 6D1E96FCDDC4603123052F7D8E0DD2012)

 


ir al índice principal del Guille