Envienos un Mensaje
follow

ASP.net

- Pasos para crear un sitio web ASP.Net con el Visual Studio 2008

 

Para crear un proyecto web debemos seleccionar desde el entorno del Visual Studio 2008: Archivo ->Nuevo sitio web. Inmediatamente aparece un diálogo donde podemos configurar que versión de Framework será compatible nuestra aplicación, la ubicación dentro del disco donde se almacenará, el lenguaje de programación a utilizar:
En este ejemplo localizamos en la unidad D y desde el explorador de archivos creamos dos carpetas una llamada “TP4” y dentro de la misma la carpeta clase1 (en esta última carpeta es donde se almacenará nuestra aplicación web)
Hemos dejado seleccionado por defecto el framework a utilizar (.NET framework 2.0)
También dejamos seleccionado la plantilla a utilizar "Sitio Web ASP.NET)"
Ya tenemos el esqueleto básico para iniciar nuestro sitio web empleando la tecnología de Microsoft.
En la parte izquierda tenemos el “Cuadro de herramientas”, en esta aparecen las componentes visuales (Label, TextBox, Button etc.) que tenemos disponibles para crear nuestro formulario Web.
En el centro aparece la página en vista de código (se puede ver en “vista de diseño”, “Divisor” y “Código”)
En la parte derecha disponemos del “Explorador de soluciones” donde podemos identificar el directorio donde se almacena nuestra aplicación web y los archivos contenidos en dicho directorio.
Siempre que creamos una aplicación web nos crea un formulario web inicial y lo almacena en el archivo Default.aspx (la extensión aspx indica que se trata de una página dinámica ASP.Net, así como la extensión php indica que su contenido está programado en PHP)
Además del archivo Default.aspx se crea otro archivo llamada Default.aspx.vb (éste archivo contiene la codificación en Visual Basic de los eventos que definamos a los controles del formulario)
Otro archivo que veremos más adelante y que se crea en forma automático es el web.config.
Por último se crea una carpeta llamada App_Data.
Para nuestro primer ejemplo implementaremos el “Hola Mundo” para ello en el recuadro central seleccionamos la pestaña “Diseño” y desde el cuadro de herramientas arrastramos un control de tipo Label. Seguidamente desde el cuadro de propiedades ubicado en la pare inferior derecha de la pantalla inicializamos la propiedad text con el mensaje que queremos que muestre nuestra “Label”, en nuestro caso “Hola Mundo”. Una vez modificada la propiedad Text con el mensaje que queremos mostrar y presionada la tecla Enter podemos ver como se actualiza la ventana de Diseño en la parte centrar de nuestra pantalla:
Para probar nuestra pequeña aplicación desarrollada debemos presionar el triángulo verde que se encuentra en la barra de botones, o desde el menú de opciones: Depurar->Iniciar depuración, o presionar la tecla “F5”.
Inmediatamente nos aparece un diálogo que nos invita a modificar el archivo Web.config para que la página se pueda ejecutar en modo depuración (esto nos permite disponer puntos de interrupción o ejecutar paso a paso una aplicación) Seleccionamos el botón “Aceptar” para activar el modo depuración.
Podemos ver que inmediatamente aparece el navegador configurado por defecto con el resultado de la ejecución de la página:
El Visual Studio 2008 instala un servidor web propio que está escuchando en un puerto desocupado. Luego de cerrar la ventana del navegador debemos detener la depuración de nuestra aplicación para poder modificarla, para esto podemos seleccionar desde el menú Depurar -> Detener Depuración o presionar desde la barra de botones el cuadradito azul (luego de esto aparece el “Cuadro de herramientas”)

Eventos

Modificaremos ahora nuestra aplicación para que muestre la fecha del servidor en una Label. Cuando desde el navegador solicitamos una página aspx lo primero que se ejecuta es el evento Page_Load. Para poder definir un método para dicho evento hacemos doble clic sobre el WebForm con lo que inmediatamente se abre el archivo Default.aspx.vb y genera dicho método:
Partial Class _Default
    Inherits System.Web.UI.Page

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As _ 
            System.EventArgs) Handles Me.Load

    End Sub
End Class
Luego codificamos dentro del método Page_Load el algoritmo que muestra la fecha actual del servidor:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As _ 
          System.EventArgs) Handles Me.Load
      Me.Label1.Text = Date.Now.Day & "/" & Date.Now.Month & "/" & Date.Now.Year
End Sub
Mediante el objeto Date y accediendo a la propiedad Now obtenemos el día, mes y año disponible en el servidor.

Captura del evento click de un objeto de la clase Button.

Ahora nuevamente modificaremos nuestra pequeña aplicación para que muestre un objeto de una clase Button y una Label.
La propiedad Text de la Label la inicializamos con el valor “0” y la propiedad Text del objeto Button lo inicializamos con la cadena “Sumar”.
El objetivo es que cada vez que se presione el botón se actualice el contenido de la Label con el valor actual más uno.
La forma más sencilla de generar dicho evento es hacer doble clic sobre el objeto Button. Otra forma es seleccionar dicho objeto de la lista que aparece en la parte superior del editor y al lado derecho según el objeto seleccionado nos aparecen todos los métodos disponibles para dicho objeto:
Luego para el evento Button1_Click actualizamos el contenido de la propiedad Text de la Label con el valor actual más uno. El operador que utilizamos es el + y no el & (que nos concatenaría el valor y no lo sumaría numéricamente como necesitamos en este problema) Podemos utilizar directamente el operador + ya que el segundo operando es un número y por lo tanto el Visual Basic convierte automáticamente el primer operando a entero.

Controles Label, Button y TextBox.

Hasta ahora hemos utilizado los controles de tipo Label y Button, ahora utilizaremos el control TextBox. Crearemos una aplicación que nos permita ingresar dos números y luego en una label muestre la suma de los mismos.
(Si tenemos un proyecto abierto podemos cerrarlo seleccionando la opción: Archivo->Cerrar proyecto y luego seguir los mismos pasos que vimos anteriormente para crear un nuevo proyecto ASP.NET)
Crearemos un proyecto llamado pruebatextbox y desarrollaremos la siguiente interface:
Disponemos tres Label, dos TextBox y un Button. Las dos primeras Label las inicializamos con los textos: “Ingrese primer valor”, “Ingrese segundo valor” y la tercera Label borramos todo el contenido de la propiedad Text (como podemos ver el visor del Visual Studio muestra el nombre del objeto encerrado entre corchetes cuando la propiedad Text está vacía)
Inicializamos la propiedad Text del objeto de tipo Button con la etiqueta “Sumar”.
Luego codificamos el evento click del objeto de la clase Button (en este evento debemos extraer el contenido de los dos controles de tipo TextBox y proceder a convertirlos a tipo de dato entero y sumarlos):
Protected Sub Button1_Click(ByVal sender As Object, ByVal _ 
             e As System.EventArgs) Handles Button1.Click
        Dim s As Integer
        s = Integer.Parse(Me.TextBox1.Text) + Integer.Parse(Me.TextBox2.Text)
        Me.Label2.Text = "La suma de los dos valores es :" & s
  End Sub
La clase Integer tiene un método estático llamado Parse y que tiene por objetivo recibir un String y retornar el valor del mismo convertido a entero.
Luego de sumar mostramos en la tercer label el resultado de la suma de los dos valores ingresados.

Control RadioButton.

Para probar el funcionamiento del control RadioButton crearemos un nuevo sitio web llamado pruebaradiobutton.
Crearemos una interface similar al problema anterior, con la salvedad que le agregaremos dos controles de tipo RadioButton para poder indicar si queremos sumar o restar los valores ingresados:
Como vemos agregamos dos controles de tipo RadioButton, inicializamos las propiedades text con los textos “Sumar” y “Restar”. Luego para indicar que los controles RadioButton están en el mismo grupo debemos inicializar la propiedad GroupName con el mismo valor (con esto logramos que al seleccionar un RadioButton el otro se desmarca), si nos olvidamos inicializar la propiedad GroupName luego los dos controles de tipo RadioButton se podrán seleccionar en forma simultánea.
Si queremos que alguno de los dos RadioButton aparezca seleccionado por defecto debemos inicializar la propiedad Checked con el valor True.
La codificación del evento click del objeto Button1 es el siguiente:
Protected Sub Button1_Click(ByVal sender As Object, ByVal e _ 
   As System.EventArgs) Handles Button1.Click
        Dim x1 As Integer = Me.TextBox1.Text
        Dim x2 As Integer = Me.TextBox2.Text
        Dim resultado As Integer
        If Me.RadioButton1.Checked Then
           resultado = x1 + x2
           Me.Label3.Text = "La suma de los dos valores es:"  & resultado
        Else
            If Me.RadioButton2.Checked Then
               resultado = x1 - x2
               Me.Label3.Text = "La diferencia de los dos valores es:" & resultado
            End If
        End If
  End Sub
Cuando se presiona el botón se ejecuta el método Button1_Click donde primero extraemos el contenido de los dos controles TextBox.
Verificamos con if cual de los dos controles RadioButton se encuentra seleccionado. La propiedad Checked del RadioButton indica si está seleccionado el control o no.

Control CheckBox.

Los controles CheckBox permiten que más de uno esté seleccionado. Similar a los controles RadioButton tiene dos estados (seleccionado o no seleccionado) y esto lo sabemos según el estado de la propiedad Checked.
Codificaremos un nuevo sitio web que permita cargar dos valores y luego calcule la suma y/o resta de los valores ingresados. Como podemos seleccionar ambas operaciones utilizaremos los controles de tipo CheckBox.
La interface visual es la siguiente:
La codificación del evento click del botón es:
Protected Sub Button1_Click(ByVal sender As Object, _
   ByVal e As System.EventArgs) Handles Button1.Click
        Dim x1 As Integer = Me.TextBox1.Text
        Dim x2 As Integer = Me.TextBox2.Text
        Dim resultado As Integer
        Me.Label3.Text = ""
        If Me.CheckBox1.Checked Then
           resultado = x1 + x2
           Me.Label3.Text = "La suma de los dos valores es:"  & resultado
        End If
        If Me.CheckBox2.Checked Then
           resultado = x1 - x2
           Me.Label3.Text = Me.Label3.Text & "<br />La" & _
             " diferencia de los dos valores es:" & resultado
        End If
  End Sub
Disponemos dos if a la misma altura ya que ambos CheckBox pueden estar seleccionados. Previo a los if borramos el contenido de la Label en el caso que tenga el resultado de operaciones anteriores.
Luego en el primer if verificamos si el primer CheckBox está seleccionado y procedemos a inicializar la propiedad Text de la Label con el resultado de la suma de los dos valores ingresados, seguidamente verificamos con un segundo if si el siguiente CheckBox está seleccionado, en caso afirmativo agregamos al contenido actual de la Label el resultado de la diferencia de los valores ingresados (Como vemos podemos añadir marcas HTML a la propiedad Text de una Label, luego estas serán interpretadas por el navegador)

Control ListBox.

El control ListBox permite crear una lista de valores.
La propiedad Item permite definir los miembros de la lista (cada item define las propiedades Text (valor a mostrar), Value (valor a retornar en caso de estar seleccionado), Selected (con un valor lógico))
Otra propiedad muy importante del control ListBox es SelectionMode, esta admite dos valores: Single o Multiple.
Crearemos una aplicación que permita cargar dos valores y mediante un control ListBox poder seleccionar si queremos sumar, restar, multiplicar o dividir dichos valores (como podemos seleccionar varias operaciones en forma simultánea configuraremos la propiedad SelectionMode del ListBox con el valor Multiple)
Luego la interface visual a crear es la siguiente (insertamos también una Label luego del botón “Calcular”, con el objetivo de mostrar los resultados):
Cuando se presiona el botón calcular verificamos cual de las opciones está seleccionada y procedemos a calcular y mostrar los resultados.
Protected Sub Button1_Click(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles Button1.Click
        Dim x1 As Integer = Me.TextBox1.Text
        Dim x2 As Integer = Me.TextBox2.Text
        Me.Label3.Text = ""
        If Me.ListBox1.Items(0).Selected Then
            Dim suma As Integer = x1 + x2
            Me.Label3.Text &= "La suma es:" & suma & "<br />"
        End If
        If Me.ListBox1.Items(1).Selected Then
            Dim resta As Integer = x1 - x2
            Me.Label3.Text &= "La diferencia:" & resta & "<br />"
        End If
        If Me.ListBox1.Items(2).Selected Then
            Dim multi As Integer = x1 * x2
            Me.Label3.Text &= "El producto:" & multi & "<br />"
        End If
        If Me.ListBox1.Items(3).Selected Then
            Dim divi As Integer = x1 / x2
            Me.Label3.Text &= "La division:" & divi & "<br />"
        End If
  End Sub
Como podemos ver primero vaciamos el contenido de la Label3 y procedemos mediante cuatro if a verificar cuales de los elementos del ListBox se encuentran seleccionados:
If Me.ListBox1.Items(0).Selected Then
Si por ejemplo el primer elemento del ListBox se encuentra seleccionado procedemos a sumar los dos valores almacenados en los TextBox y los agregamos a la Label:
Dim suma As Integer = x1 + x2
            Me.Label3.Text &= "La suma es:" & suma & "<br />"

Control DropDownList.

El control DropDownList permite crear una lista de valores y luego seleccionar solo uno de ellos, esta es la diferencia fundamental con el control ListBox.
Para probar este control implementaremos el problema propuesto con el control ListBox, ahora la interface es la siguiente:
Cargamos las cuatro operaciones básicas en el control DropDownList y para el evento clic del botón tenemos que codificar:
Dim x1 As Integer = Me.TextBox1.Text
        Dim x2 As Integer = Me.TextBox2.Text
        If Me.DropDownList1.Items(0).Selected Then
            Dim suma As Integer = x1 + x2
            Me.Label3.Text = "La suma es:" & suma & "<br />"
        ElseIf Me.DropDownList1.Items(1).Selected Then
            Dim resta As Integer = x1 - x2
            Me.Label3.Text = "La diferencia:" & resta & "<br />"
        ElseIf Me.DropDownList1.Items(2).Selected Then
            Dim multi As Integer = x1 * x2
            Me.Label3.Text = "El producto:" & multi & "<br />"
        ElseIf Me.DropDownList1.Items(3).Selected Then
            Dim divi As Integer = x1 / x2
            Me.Label3.Text = "La division:" & divi & "<br />"
        End If
Como solo un elemento del control DropDowList puede estar seleccionado disponemos una serie de if/elseif para verificar cual de ellos es el seleccionado. Cuando identificamos el item seleccionado procedemos a efectuar el cálculo correspondiente y mostrarlo en la Label3.

Ejercicios propuestos

1 – Confeccionar una página que solicite el ingreso del nombre y apellido de una persona (cada elemento en un TextBox), luego al presionar un botón mostrar en una label si alguno de los datos no se cargó.
2 – Confeccionar una página que muestre un examen múltiple choice (disponer 4 preguntas y tres respuestas posibles por pregunta) utilizar controles de tipo RadioButton para la selección de la respuesta correcta.
Mostrar la cantidad de respuestas correctas luego que se presiona un botón.
3 – Solicitar el ingreso de un número en un textbox. Verificar con la función IsNumeric si se trata de un número. En caso que se trate de un número mostrar la cantidad de dígitos que tiene.
4 – Disponer un conjunto de RadioButton agrupados. Mostrar en las leyendas de cada RadioButton distintos buscadores (Google, Bing, Yahoo etc.)
Cuando se presione un botón redireccionar a dicho servidor (para redireccionar debemos utilizar la siguiente sintaxis response.redirect(http://www.google.com.ar)
5 – Confeccionar el siguiente formulario para registrarse en un sitio web (utilizar controles de la pestaña estandar)
En una Label mostrar los datos cargados en cada control (disponer la Label al final del formulario) Hacer por lo menos 5 validaciones y mostrar mensajes de errores en una Label.

- Creación, lectura y escritura de archivos de texto.

En muchas situaciones es necesario almacenar información en el servidor, tenemos dos alternativas, si la cantidad de datos a almacenar es pequeña podemos utilizar un archivo de texto para ello (en la próxima clase veremos como almacenar en una base de datos)
Un archivo de texto no requiere grandes recursos del servidor.

Creación y carga del archivo de texto.

Confeccionaremos un libro de visitas de un sitio web.
La página principal dispondremos de dos hipervínculos (HyperLink), el primero irá al formulario de carga y el segundo al listado del contenido del archivo.
La página Default.aspx:

El primer control HyperLink nos lleva al formulario web que permite cargar el nombre del visitante, su país y los comentarios.
El formulario web requiere tres objetos de la clase TextBox, al tercero donde se ingresan los comentarios debemos inicializar la propiedad TextMode con el valor MultiLine.
Disponemos un control de tipo HyperLink para poder retornar a la página principal.

Cuando se presiona el botón confirmar procedemos a almacenar los datos del formulario en el archivo de texto, si existe los agregamos al final, en caso que no exista se crea el archivo.
Mostramos finalmente en una label que se almacenaron los datos.
El código completo para registrar los datos es:
Imports System.IO
Partial Class Default2
    Inherits System.Web.UI.Page

    Protected Sub Button1_Click(ByVal sender As Object, _
                ByVal e As System.EventArgs) Handles Button1.Click
        Dim arch As New StreamWriter(Me.Server.MapPath(".") & "/" & "visitas.txt", True)
        arch.WriteLine("Nombre:" & Me.TextBox1.Text)
        arch.WriteLine("<br />")
        arch.WriteLine("Pais:" & Me.TextBox2.Text)
        arch.WriteLine("<br />")
        arch.WriteLine("Comentarios<br />")
        arch.WriteLine(Me.TextBox3.Text)
        arch.WriteLine("<br />")
        arch.WriteLine("<hr />")
        arch.Close()
        Me.Label1.Text = "Datos Registrados"
    End Sub
End Class
Primero importamos el espacio de nombres donde está declarada la clase StreamWriter:
Imports System.IO
Cuando se presiona el botón confirmar creamos un objeto de la clase StreamWriter y le pasamos en el constructor el path y nombre del archivo a abrir o crear según sea el caso.
Para obtener el directorio actual utilizamos el método MapPath del objeto Server:
Dim arch As New StreamWriter(Me.Server.MapPath(".") & "/" & "visitas.txt", True)
El valor true que le pasamos en el constructor significa que si el archivo no existe en el servidor en la carpeta especificada se procede a su creación y en el caso que si existe se procede a su apertura y posicionado del puntero de archivo al final del mismo.
El método WriteLine de la clase StreamWriter permite almacenar una línea en el archivo de texto y el posterior ingreso en forma automática del salto de línea:
arch.WriteLine("Nombre:" & Me.TextBox1.Text)
        arch.WriteLine("<br />")
        arch.WriteLine("Pais:" & Me.TextBox2.Text)
        arch.WriteLine("<br />")
        arch.WriteLine("Comentarios<br />")
        arch.WriteLine(Me.TextBox3.Text)
        arch.WriteLine("<br />")
        arch.WriteLine("<hr />")
Cuando finalizamos de trabajar con el archivo procedemos a cerrarlo:
arch.Close()

Lectura del archivo de texto.

Creamos una página donde mostraremos todos los datos almacenados en el archivo de texto visitas.txt.
El archivo de texto almacena los datos de los visitantes y las marcas HTML básicas para hacer los saltos de línea y líneas separadoras entre comentarios, solo nos queda leer el archivo e ir almacenándolo en la Label para que lo muestre.
Podemos disponer un control de tipo HyperLink para retornar a la página principal.

El código necesario para leer y cargar los datos en la Label1 es:
Imports System.IO
Partial Class Default3
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, _
            ByVal e As System.EventArgs) Handles Me.Load
        Dim arch As New StreamReader(Me.Server.MapPath(".") & "/" & "visitas.txt")
        Dim linea As String
        linea = arch.ReadLine
        Do While Not linea Is Nothing
            Me.Label1.Text = Me.Label1.Text & linea
            linea = arch.ReadLine
        Loop
        arch.Close()
    End Sub
End Class
Importamos el espacio de nombres donde está declarada la clase StreamReader:
Imports System.IO
Procedemos a realizar la apertura del archivo, indicando el camino donde se encuentra:
Dim arch As New StreamReader(Me.Server.MapPath(".") & "/" & "visitas.txt")
Antes de la estructura repetitiva procedemos a leer la primer línea del archivo:
Dim linea As String
        linea = arch.ReadLine
El método ReadLine de la clase StreamReader retorna el contenido de toda una línea del archivo de texto. En caso que no haya más líneas en el archivo de texto el método ReadLine retorna el valor Nothing.
El while nos permite recorrer todo el archivo y cargar cada línea leída en la Label1:
Do While Not linea Is Nothing
            Me.Label1.Text = Me.Label1.Text & linea
            linea = arch.ReadLine
        Loop
Finalmente procedemos a cerrar el archivo:
arch.Close()

Contador de páginas vistas.

Confeccionaremos ahora un simple contador de páginas utilizando un archivo de texto de una sola línea. Cada vez que un navegador solicite la página mostraremos el contador.

Disponemos una Label para mostrar el valor del contador que se almacena en el archivo de texto.
En el evento Page_Load hacemos todo el algoritmo:
Imports System.IO
Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, _
            ByVal e As System.EventArgs) Handles Me.Load
        If File.Exists(Me.Server.MapPath(".") & "/" & "contador.txt") Then
            Dim arch1 As New StreamReader(Me.Server.MapPath(".") & "/" & "contador.txt")
            Dim conta As Integer
            conta = arch1.ReadLine
            conta = conta + 1
            arch1.Close()
            Dim arch2 As New StreamWriter(Me.Server.MapPath(".") & "/" & "contador.txt")
            arch2.WriteLine(conta)
            arch2.Close()
            Me.Label1.Text = conta
        Else
            Dim arch As New StreamWriter(Me.Server.MapPath(".") & "/" & "contador.txt")
            arch.WriteLine("1")
            arch.Close()
            Me.Label1.Text = "1"
        End If
    End Sub
End Class
Mediante un if verificamos si existe el archivo que almacena el contador (la clase File tiene un método estático llamado Exists que retorna true si existe el archivo en la carpeta indicada):
If File.Exists(Me.Server.MapPath(".") & "/" & "contador.txt") Then
En caso que el archivo existe procedemos a abrirlo con el objetivo de leer su única línea:
Dim arch1 As New StreamReader(Me.Server.MapPath(".") & "/" & "contador.txt")
            Dim conta As Integer
            conta = arch1.ReadLine
            conta = conta + 1
            arch1.Close()
Luego procedemos a crearlo nuevamente y almacenar el valor que acabamos de leer, previo a incrementarlo en uno (mostramos en la Label el valor del contador actual):
Dim arch2 As New StreamWriter(Me.Server.MapPath(".") & "/" & "contador.txt")
            arch2.WriteLine(conta)
            arch2.Close()
            Me.Label1.Text = conta
Si el archivo no existe procedemos a crearlo almacenando el valor 1:
Dim arch As New StreamWriter(Me.Server.MapPath(".") & "/" & "contador.txt")
            arch.WriteLine("1")
            arch.Close()
            Me.Label1.Text = "1"

Ejercicios propuestos

1 – Confeccionar un sitio que permita ingresar los datos del curriculum de una persona y almacenarlos en un archivo de texto.

 

- Clases SQLConnection y SQLCommand (ABM - Altas, Bajas y Modificaciones)

Con ASP.Net podemos comunicarnos a distintos gestores de base de datos como pueden ser SQL Server, Oracle, Access, MySQL etc.
Nosotros trabajaremos con el gestor de base de datos SQL Server, uno por ser el más empleado cuando se utiliza la tecnología de ASP.Net en el desarrollo de sitios web dinámicos.
En esta clase especificaremos todo el código necesario para acceder al gestor de base de datos, desde la cadena de conexión hasta la implementación de los comandos SQL a enviar.

ABM (Altas, Bajas y Modificaciones)

Crearemos una base de datos en SQL Server llamada: administración y dentro de la misma definiremos una tabla llamada usuarios con tres campos:
nombre  varchar(30)   Clave primaria
clave	varchar(30)
mail varchar(30)
Crearemos un sitio web en el Visual Studio 2008 llamado abm1.
La primer página solo tendrá los hipervínculos a otras páginas que tendrán por objetivo efectuar una el alta de usuarios, otra la baja, otra las modificaciones y por último otra la consulta:

Para crear esta interface insertaremos cuatro objetos de la clase HyperLink, como mínimo debemos inicializar las propiedades text (es el texto que mostrará el hipervínculo en el navegador y la propiedad NavigateUrl que indica el nombre de la página que debe cargar el navegador cuando se presione el hipervínculo)
Como todavía no tenemos creada las otras cuatro páginas no podemos inicializar la propiedad NavigateUrl de cada HyperLink.
Como segundo paso creemos las cuatro páginas, para ello desde el menú: Archivo -> Nuevo archivo… seleccionamos la plantilla “Web Forms” y en la parte inferior definimos el nombre del archivo aspx.
Los nombres de las cuatro páginas a crear serán:
altausuario.aspx
consultausuario.aspx
bajausuario.aspx
modificacionusuario.aspx
Una vez que hemos creado las cuatro páginas aspx podemos proceder a enlazar la propiedad NavigateUrl de cada control HyperLink.
Cuando seleccionamos la propiedad NavigateUrl aparece un dialogo que nos permite seleccionar la página aspx a enlazar.
Una vez inicializada la propiedad NavigateUrl podremos ver que el texto aparece subrayado (indicando que se trata de un hipervínculo)

Definición de la cadena de conexión con la base de datos en el archivo web.config

Web.config es el archivo principal de opciones de configuración para una aplicación web en ASP.NET.
El archivo es un documento XML que define información de configuración concerniente a la aplicación web. El archivo web.config contiene información que controla la carga de módulos, configuraciones de seguridad, configuraciones del estado de la sesión, opciones de compilación y el lenguaje de la aplicación.
El archivo web.config contiene también la cadenas de conexión a la base de datos.
Debemos modificar la sección:
<connectionStrings/>
y remplazarlo por:
<connectionStrings>
<add name="administracion" 
     connectionString="Data Source=(local);Initial Catalog=administracion;Integrated Security=SSPI;"/>
</connectionStrings>
Como vemos en la propiedad connectionString indicamos en Initial Catalog el nombre de la base de datos que hemos creado en SQL Server.

Altas

Activemos desde el Visual Studio 2008 la pestaña altausuario.aspx para elaborar la interface visual que nos permita efectuar la carga de datos de usuarios:

Como podemos ver disponemos tres controles de tipo TextBox, el que solicita el ingreso de la clave modificamos la propiedad TextMode con el valor Password, los otros dos los dejamos con el valor SingleLine.
Disponemos un objeto de la clase Button y una Label donde mostraremos un mensaje si el alta se efectuó correctamente.
Por último disponemos un objeto de la clase HyperLink configurando la propiedad NavigateUrl con la dirección de la página principal (Default.aspx)
Ahora codificamos el evento clic del botón de alta:
Imports System.Data.SqlClient

Partial Class altausuario
    Inherits System.Web.UI.Page

  Protected Sub Button1_Click(ByVal sender As Object, _
              ByVal e As System.EventArgs) Handles Button1.Click
      Try
            Dim s As String
            s = ConfigurationManager.ConnectionStrings("administracion").ConnectionString
            Dim conexion As New SqlConnection(s)
            conexion.Open()
            Dim comando As New SqlCommand("insert into usuarios(nombre,clave,mail) values('" _
              & Me.TextBox1.Text & "','" & Me.TextBox2.Text & "','" _
              & Me.TextBox3.Text & "')", conexion)
            comando.ExecuteNonQuery()
            Me.Label1.Text = "Se registró el usuario"
            conexion.Close()
      Catch ex As SqlException
            Me.Label1.Text = ex.Message
      End Try
  End Sub
End Class
Lo primero que debemos hacer es importar el espacio de nombres donde se encuentra definida la clase SqlException:
Imports System.Data.SqlClient
Al presionar el botón, primero extraemos la cadena de conexión que tenemos almacenada en el archivo web.config:
s = ConfigurationManager.ConnectionStrings("administracion").ConnectionString
Creamos un objeto de la clase SQLConnection indicando como parámetro la cadena de conexión que rescatamos anteriormente:
	Dim conexion As New SqlConnection(s)
Abrimos la conexión:
conexion.Open()
Creamos un objeto de la clase SqlCommand creándolo con los datos cargados en los controles TextBox:
Dim comando As New SqlCommand("insert into usuarios(nombre,clave,mail) values('" _
         & Me.TextBox1.Text & "','" & Me.TextBox2.Text & "','" _
         & Me.TextBox3.Text & "')", conexion)
Pedimos a SQL Server que ejecute el comando especificado anteriormente:
comando.ExecuteNonQuery()
Cerramos la conexión:
conexion.Close()
Todo esto lo hacemos capturando la excepción SQLException.
En caso de dispararse un error será capturado por el Catch y procederemos a mostrar en una Label el mensaje de error respectivo:
Catch ex As SqlException
            Me.Label1.Text = ex.Message
      End Try

Consultas

Seleccionamos del Explorador de soluciones la página consultausuario.aspx y procedemos a elaborar la siguiente interface visual (disponemos un TextBox, un Button, una Label y un HyperLink:

El código del evento click es:
Imports System.Data.SqlClient

Partial Class consultausuario
    Inherits System.Web.UI.Page

  Protected Sub Button1_Click(ByVal sender As Object, _ 
          ByVal e As System.EventArgs) Handles Button1.Click
        Try
            Dim s As String
            s = ConfigurationManager.ConnectionStrings("administracion").ConnectionString
            Dim conexion As New SqlConnection(s)
            conexion.Open()
            Dim comando As New SqlCommand("select nombre,clave,mail from usuarios " _
              & " where nombre='" & Me.TextBox1.Text & "'", conexion)
            Dim registro As SqlDataReader = comando.ExecuteReader
            If registro.Read Then
               Me.Label1.Text = "Clave:" & registro("clave") & "<br>" _
                               & "Mail:" & registro("mail")
            Else
               Me.Label1.Text = "No existe un usuario con dicho nombre"
            End If
        Catch ex As SqlException
            Me.Label1.Text = ex.Message
        End Try
  End Sub
End Class
Para poder recuperar los datos lo hacemos creando un objeto de la clase SqlDataReader e inicializándolo mediante la llamada del método ExecuteReader de la clase SQLCommand:
Dim registro As SqlDataReader = comando.ExecuteReader
Luego recorremos el SqlDataReader (como este caso puede retornar cero o una fila lo hacemos mediante un if:
If registor.Read Then
Si el método Read retorna true luego podemos acceder a la fila recuperada con el select.

Bajas

Seleccionamos del Explorador de soluciones la página bajausuario.aspx y procedemos a elaborar la siguiente interface visual:

Luego el código a ejecutar cuando se presiona el botón “Borrar” de la página es:
Imports System.Data.SqlClient

Partial Class bajausuario
    Inherits System.Web.UI.Page

  Protected Sub Button1_Click(ByVal sender As Object, _
              ByVal e As System.EventArgs) Handles Button1.Click
        Try
            Dim s As String
            s = ConfigurationManager.ConnectionStrings("administracion").ConnectionString
            Dim conexion As New SqlConnection(s)
            conexion.Open()
            Dim comando As New SqlCommand
("delete from usuarios where nombre='" & Me.TextBox1.Text & "'", conexion)
            Dim cant As Integer = comando.ExecuteNonQuery
            If cant = 1 Then
                Me.Label1.Text = "Se borró el usuario"
            Else
                Me.Label1.Text = "No existe un usuario con dicho nombre"
            End If
            conexion.Close()
        Catch ex As SqlException
            Me.Label1.Text = ex.Message
        End Try
  End Sub
End Class
El método ExecuteNonQuery retorna un entero y representa la cantidad de filas borradas de la tabla.

Modificaciones

Por último implementaremos la modificación de datos. Seleccionamos del Explorador de soluciones la página modificacionusuario.aspx y procedemos a elaborar la siguiente interface visual:

Para efectuar la modificación de datos de un usuario procederemos primero a la búsqueda de los datos actuales.
Luego el código para los eventos clic de los dos botones es:
Imports System.Data.SqlClient

Partial Class modificacionusuario
    Inherits System.Web.UI.Page

  Protected Sub Button1_Click(ByVal sender As Object, _
                        ByVal e As System.EventArgs) Handles Button1.Click
        Try
            Dim s As String
            s = ConfigurationManager.ConnectionStrings("administracion").ConnectionString
            Dim conexion As New SqlConnection(s)
            conexion.Open()
            Dim comando As New SqlCommand("select nombre,clave,mail from usuarios " _
                 & " where nombre='" & Me.TextBox1.Text & "'", conexion)
            Dim registro As SqlDataReader = comando.ExecuteReader
            If registro.Read Then
                Me.TextBox2.Text = registro("clave")
                Me.TextBox3.Text = registro("mail")
            Else
                Me.Label1.Text = "No existe un usuario con dicho nombre"
            End If
        Catch ex As SqlException
            Me.Label1.Text = ex.Message
        End Try
  End Sub

  Protected Sub Button2_Click(ByVal sender As Object, _
                ByVal e As System.EventArgs) Handles Button2.Click
        Try
            Dim s As String
            s = ConfigurationManager.ConnectionStrings("administracion").ConnectionString
            Dim conexion As New SqlConnection(s)
            conexion.Open()
            Dim comando As New SqlCommand("update usuarios set " & _
                 "clave='" & Me.TextBox2.Text & _
                 "',mail='" & Me.TextBox3.Text & _
                 "' where nombre='" & Me.TextBox1.Text & "'", conexion)
            Dim cant As Integer = comando.ExecuteNonQuery()
            If cant = 1 Then
                Me.Label1.Text = "Datos Modificados"
            Else
                Me.Label1.Text = "No existe el usuario"
            End If
            conexion.Close()
        Catch ex As SqlException
            Me.Label1.Text = ex.Message
        End Try
  End Sub
End Class
El botón “Buscar” hace lo mismo que vimos en la consulta. Luego cuando se presiona el botón “Modificar” procedemos a hacer un update de la tabla usuarios con los datos cargados en los TextBox.

Ejercicios propuestos

1 – Crear una tabla:
alumnos (dni varchar(8), apellidonom varchar(50), provincia varchar(30))
Confeccionar una serie de páginas que permitan efectuar altas, bajas, modificaciones y consultas.

 

By Los precios Mas Locos with
Con la tecnología de Blogger.

Featured Video

Photos

Advertisement

Ads