Está en la página 1de 134

AUTOR: ING. PEDRO VELEZ DUQUE MSC.

1

P.O.O. III PROGRAMACION WEB CON ASP.NET
MANUAL DE PROGRAMACION DE ASP.NET
Instalacin de Servicios de Internet Information Server
1. En Windows XP, ejecute la secuencia Inicio, Panel de control.
2. En Panel de control, ejecute Agregar o quitar programas y, luego
Agregar o quitar componentes de Windows.
3. En el Asistente para componentes de Windows, en la lista
Componentes seleccione Servicios de Internet Information Server
(IIS).

4. Haga clic en Siguiente para iniciar la instalacin. Siga las
instrucciones del Asistente.
Configuracin de las Extensiones de servidor de FrontPage
1. En Windows XP, ejecute la secuencia Inicio, Panel de control,
Rendimiento y mantenimiento, Herramientas administrativas,
Administracin de equipos.
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 2

P.O.O. III PROGRAMACION WEB CON ASP.NET
2. En la ventana Administracin de equipos, expanda el nodo Servicios
y aplicaciones y, a continuacin, el nodo Servicios de Internet
Information Server.
3. Expanda el nodo Sitios Web.


4. Haga clic con el botn secundario en Sitio Web predeterminado,
seleccione Todas las tareas y, a continuacin, Configurar las
extensiones de servidor.
Nota: Si no se encuentra el comando de men Configurar las
extensiones de servidor, entonces Extensiones de servidor de
FrontPage 2000 ya est instalado.
5. Seleccione Siguiente en la primera pgina del Asistente para la
Configuracin de Extensiones de servidor.
6. Elija S en el cuadro de dilogo Advertencia.
7. Elija No para configurar las opciones del servidor de correo y, a
continuacin, Siguiente.
8. Seleccione Finalizar.
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 3

P.O.O. III PROGRAMACION WEB CON ASP.NET
Instalacin de los servicios de Message Queue Server
1. En Windows XP, ejecute la secuencia Inicio, Panel de control.
2. En Panel de control, ejecute Agregar o quitar programas y, luego
Agregar o quitar componentes de Windows.
3. En el Asistente para componentes de Windows, seleccione Servicios
de Message Queue Server en la lista Componentes.
4. Haga clic en Siguiente, y siga el resto de los pasos.
Definicin de la carpeta cualquiera como carpeta Web
Para que la carpeta pueda ser accedida va http debemos configurarla
como un directorio virtual de nuestro servidor Web.
Creacin de un directorio virtual de IIS
1. En su Windows XP, ejecute la secuencia Inicio, Panel de control,
Herramientas administrativas.
2. En la ventana Herramientas administrativas, ejecute Servicios de
Internet Information Server.
3. En la ventana de Servicios de Internet Information Server expanda
el nodo correspondiente a su equipo. Luego expanda la carpeta Sitios
Web.
4. Expanda la entrada Sitio Web predeterminado.

5. Seleccione la entrada Sitio Web predeterminado con un clic
secundario, y en el men contextual ejecute Nuevo, Directorio
virtual. Se abre el Asistente para crear un directorio virtual.
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 4

P.O.O. III PROGRAMACION WEB CON ASP.NET
6. Haga clic en el botn Siguiente.
7. En Alias digite un nombre abreviado para su carpeta Web. Por
ejemplo, digite MiWeb1.

8. Haga clic en el botn Siguiente.
9. Haga clic en el botn Examinar para ubicar la carpeta PERUTravel-
HTML, en Directorio digite la ruta a la carpeta.
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 5

P.O.O. III PROGRAMACION WEB CON ASP.NET

10. Haga clic en el botn Siguiente.
11. En Permisos de acceso deje los permisos predeterminados.

AUTOR: ING. PEDRO VELEZ DUQUE MSC. 6

P.O.O. III PROGRAMACION WEB CON ASP.NET
12. Haga clic en el botn Siguiente, y luego clic en el botn
Finalizar. Una referencia a la carpeta creada con el alias MiWeb1 se
aade al servidor Web.



13. Cierre la ventana Servicios de Internet Information Server.
Carga del sitio Web va http
1. Abra Internet Explorer.
2. En la Barra de direccin digite
http://localhost/MiWeb1/Default.html y pulse [Enter]. El trmino
localhost hace referencia al servidor Web.






AUTOR: ING. PEDRO VELEZ DUQUE MSC. 7

P.O.O. III PROGRAMACION WEB CON ASP.NET
Pasos para crear un sitio web ASP.Net
Conceptos.
Para crear un proyecto web debemos seleccionar desde el entorno del
Visual Studio 2008: Archivo ->Nuevo sitio web. Inmediatamente aparece
un dilogo donde podemos configurar que versin de Framework ser
compatible nuestra aplicacin, la ubicacin dentro del disco donde se
almacenar, el lenguaje de programacin 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 aplicacin web)
Hemos dejado seleccionado por defecto el framework a utilizar (.NET
framework 2.0)
Tambin dejamos seleccionado la plantilla a utilizar "Sitio Web
ASP.NET)"
Ya tenemos el esqueleto bsico para iniciar nuestro sitio web
empleando la tecnologa de Microsoft.
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 8

P.O.O. III PROGRAMACION WEB CON ASP.NET


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 pgina en vista de cdigo (se puede ver en
vista de diseo, Divisor y Cdigo)
En la parte derecha disponemos del Explorador de soluciones donde
podemos identificar el directorio donde se almacena nuestra
aplicacin web y los archivos contenidos en dicho directorio.
Siempre que creamos una aplicacin web nos crea un formulario web
inicial y lo almacena en el archivo Default.aspx (la extensin aspx
indica que se trata de una pgina dinmica ASP.Net, as como la
extensin php indica que su contenido est programado en PHP)
Adems del archivo Default.aspx se crea otro archivo llamada
Default.aspx.vb (ste archivo contiene la codificacin en Visual
Basic de los eventos que definamos a los controles del formulario)
Otro archivo que veremos ms adelante y que se crea en forma
automtico 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 pestaa Diseo 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 Diseo en la parte centrar de nuestra
pantalla:


AUTOR: ING. PEDRO VELEZ DUQUE MSC. 9

P.O.O. III PROGRAMACION WEB CON ASP.NET

Para probar nuestra pequea aplicacin desarrollada debemos presionar
el tringulo verde que se encuentra en la barra de botones, o desde
el men de opciones: Depurar->Iniciar depuracin, o presionar la
tecla F5.
Inmediatamente nos aparece un dilogo que nos invita a modificar el
archivo Web.config para que la pgina se pueda ejecutar en modo
depuracin (esto nos permite disponer puntos de interrupcin o
ejecutar paso a paso una aplicacin) Seleccionamos el botn Aceptar
para activar el modo depuracin.
Podemos ver que inmediatamente aparece el navegador configurado por
defecto con el resultado de la ejecucin de la pgina:



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 depuracin de nuestra aplicacin para
poder modificarla, para esto podemos seleccionar desde el men
Depurar -> Detener Depuracin o presionar desde la barra de botones
el cuadradito azul (luego de esto aparece el Cuadro de
herramientas)
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 10

P.O.O. III PROGRAMACION WEB CON ASP.NET
Eventos
Modificaremos ahora nuestra aplicacin para que muestre la fecha del
servidor en una Label. Cuando desde el navegador solicitamos una
pgina aspx lo primero que se ejecuta es el evento Page_Load. Para
poder definir un mtodo para dicho evento hacemos doble clic sobre el
WebForm con lo que inmediatamente se abre el archivo Default.aspx.vb
y genera dicho mtodo:

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 mtodo 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
da, mes y ao disponible en el servidor.

Captura del evento click de un objeto de la clase Button.
Ahora nuevamente modificaremos nuestra pequea aplicacin 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 botn se actualice el
contenido de la Label con el valor actual ms uno.
La forma ms 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
segn el objeto seleccionado nos aparecen todos los mtodos
disponibles para dicho objeto:



AUTOR: ING. PEDRO VELEZ DUQUE MSC. 11

P.O.O. III PROGRAMACION WEB CON ASP.NET

Luego para el evento Button1_Click actualizamos el contenido de la
propiedad Text de la Label con el valor actual ms uno. El operador
que utilizamos es el + y no el & (que nos concatenara el valor y no
lo sumara numricamente como necesitamos en este problema) Podemos
utilizar directamente el operador + ya que el segundo operando es un
nmero y por lo tanto el Visual Basic convierte automticamente 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 aplicacin que
nos permita ingresar dos nmeros y luego en una label muestre la suma
de los mismos.
(Si tenemos un proyecto abierto podemos cerrarlo seleccionando la
opcin: 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 vaca)
Inicializamos la propiedad Text del objeto de tipo Button con la
etiqueta Sumar.
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 12

P.O.O. III PROGRAMACION WEB CON ASP.NET
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 mtodo esttico 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 estn 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
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 13

P.O.O. III PROGRAMACION WEB CON ASP.NET
controles de tipo RadioButton se podrn seleccionar en forma
simultnea.
Si queremos que alguno de los dos RadioButton aparezca seleccionado
por defecto debemos inicializar la propiedad Checked con el valor
True.
La codificacin 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 botn se ejecuta el mtodo 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 ms de uno est seleccionado.
Similar a los controles RadioButton tiene dos estados (seleccionado o
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 14

P.O.O. III PROGRAMACION WEB CON ASP.NET
no seleccionado) y esto lo sabemos segn 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 codificacin del evento click del botn 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" & _
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 15

P.O.O. III PROGRAMACION WEB CON ASP.NET
" 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 aadir marcas HTML a la propiedad Text de una
Label, luego estas sern 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
lgico))
Otra propiedad muy importante del control ListBox es SelectionMode,
esta admite dos valores: Single o Multiple.
Crearemos una aplicacin 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 simultnea configuraremos la propiedad
SelectionMode del ListBox con el valor Multiple)
Luego la interface visual a crear es la siguiente (insertamos tambin
una Label luego del botn Calcular, con el objetivo de mostrar los
resultados):
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 16

P.O.O. III PROGRAMACION WEB CON ASP.NET

Cuando se presiona el botn 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
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 17

P.O.O. III PROGRAMACION WEB CON ASP.NET
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 bsicas en el control DropDownList y
para el evento clic del botn 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
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 18

P.O.O. III PROGRAMACION WEB CON ASP.NET
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 clculo correspondiente y mostrarlo en la
Label3.
Ejercicios propuestos
1 Confeccionar una pgina que solicite el ingreso del nombre y
apellido de una persona (cada elemento en un TextBox), luego al
presionar un botn mostrar en una label si alguno de los datos no se
carg.
2 Confeccionar una pgina que muestre un examen mltiple choice
(disponer 4 preguntas y tres respuestas posibles por pregunta)
utilizar controles de tipo RadioButton para la seleccin de la
respuesta correcta.
Mostrar la cantidad de respuestas correctas luego que se presiona un
botn.
3 Solicitar el ingreso de un nmero en un textbox. Verificar con la
funcin IsNumeric si se trata de un nmero. En caso que se trate de
un nmero mostrar la cantidad de dgitos que tiene.
4 Disponer un conjunto de RadioButton agrupados. Mostrar en las
leyendas de cada RadioButton distintos buscadores (Google, Bing,
Yahoo etc.)
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 19

P.O.O. III PROGRAMACION WEB CON ASP.NET
Cuando se presione un botn 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 pestaa 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.









AUTOR: ING. PEDRO VELEZ DUQUE MSC. 20

P.O.O. III PROGRAMACION WEB CON ASP.NET
DISEO DE APLICACIONES WEB USANDO CONTROLES ESTANDAR
EJERCICIO1
ELABORE EL SIGUIENTE DISEO

ESTA APLICACIN SE UTILIZA LOS LABELS, TEXTBOX, DROPDOWNLIST Y UN
BUTTON. EN EL CONTROL DROPDOWNLIST AGREGUE LOS SIGUIENTES ELEMENTOS,
HACIENDO CLIC EN LA PROPIEDAD ITEMS (COLECCION)






AUTOR: ING. PEDRO VELEZ DUQUE MSC. 21

P.O.O. III PROGRAMACION WEB CON ASP.NET
EJERCICIO2
ELABORE EL SIGUIENTE DISEO UTILIZANDO CONTROLES ESTANDAR (LABELS,
TEXTBOX, CHECKBOXLIST, LISTBOX, RADIOBUTTON, BUTTON, TABLE PARA
ORGANIZAR LOS CONTROLES)

PROCESOS SIMPLES
1.- LA SIGUIENTE APLCACION PERMITE QUE OBTENER LA HORA ACTUAL

HAGA DOBLE CLIC EN EL BOTON Y ESCRIBA EL SIGUINETE CODIGO
Protected Sub Button_Click(ByVal sender As Object, ByVal e As
EventArgs) Handles Button1.Click
Label1.Text = "La hora actual es " + DateTime.Now
End Sub

AUTOR: ING. PEDRO VELEZ DUQUE MSC. 22

P.O.O. III PROGRAMACION WEB CON ASP.NET
2.- LA SIGUIENTE APLCACION PERMITE QUE SUMAR DOS TEXTBOX Y MOSTRAR EL
RESULTADO EN EL MISMOS LABEL QUE MUESTRA EL MENSAJE INTRODUZCA LOS
DOS NUMEROS QUE DESEE SUMAR, HACIENDO CLIC EN EL BOTON SUMAR


Sub MostrarInstrucciones(ByVal Mode As String)
If Mode = "Inicial" Then
alvi.Text = "introduza los dos numeros que" & "desee
sumar."
Else
alvi.Text = "El resultado se muestra" & "debajo"
End If
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
If IsPostBack Then
MostrarInstrucciones("Final")
Else
MostrarInstrucciones("Inicial")
End If
End Sub
Function AddNums(ByVal Num1 As Single, ByVal Num2 As Single) As
Single
AddNums = Num1 + Num2
End Function
Sub ApretarelBoton(ByVal Sender As Object, ByVal E As EventArgs)
Handles Botonok.Click
alvi.Text = "Resultado: " & AddNums(numeros1.Text,
numeros2.Text)
End Sub




AUTOR: ING. PEDRO VELEZ DUQUE MSC. 23

P.O.O. III PROGRAMACION WEB CON ASP.NET
3. SE COLOCA EL SIGUIENTE MENSAJE FECHA CON FORMATCO DE HOY EN DIA,
MES Y AO Y EL OTRO UN LABEL TENDRA COMO ID: FECHAID

HACIENDO DOBLE CLIC EN EL FORMULARIO ESCRIBIRA EL SIGUIENTE CODIGO
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
Dim fechaS As String
Dim miFecha As DateTime = DateTime.Now()
fechaS = String.Format("{0:dd/MM/yyyy}", miFecha)
fechaId.Text = fechaS
End Sub
4.- ESTA APLICACIN SE OBTENDRA LOS RESULTADOS DE LAS 4 OPERACIONES
ARTIMETICAS QUE UTILIZA LABELS Y SE ESCRIBEN EN EL ORDEN LAS
OPERACIONES

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
Dim numeroA As Double = 90.9
Dim numeroB As Double = 3.3
Dim suma, resta, multiplicar, dividir As Double
Dim sumaS, restaS, multiplicarS, dividirS As String
suma = numeroA + numeroB
sumaS = String.Format("{0:c}", suma)
sumaId.Text = sumaS
resta = numeroA - numeroB
restaS = String.Format("{0:c}", resta)
restaId.Text = restaS
multiplicar = numeroA * numeroB
multiplicarS = String.Format("{0:c}", multiplicar)
multiplicarId.Text = multiplicarS
dividir = numeroA / numeroB
dividirS = String.Format("{0:c}", dividir)
dividirId.Text = dividirS
End Sub
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 24

P.O.O. III PROGRAMACION WEB CON ASP.NET
5.- EN LA SIGUIENTE APLICACIN SE CARGA UNA PAGINA CON 2 PALABRAS
CONCATENADAS, UTILIZANDO 1 LABEL PARA MOSTRAR ESTE RESULTADO

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
Dim nombre, apellido As String
nombre = "Felipe"
apellido = "Borbon"
t1.Text = nombre & apellido
End Sub
6.-EN LA SIGUIENTE APLICACIN SE DESARROLLA UNA APLICACIN QUE
UTILIZA EL BOTON SUBMIT DE HTML Y EN LA CUAL SE LO UTILIZA PARA
MOSTRAR LO QUE SE ESCRIBIO EN UN TEXTAREA Y UTILIZA UNA FUN CION QUE
LA INVOCA
<body>
<form id="form1" runat="server">
Introduzca un texto:<br />
<textarea id="textarea1" rows="6" cols="35" runat="server"/>
<input id="Submit1" type="submit" value="Submit"
OnServerClick="submit" runat="server"/>
<p id="p1"
runat="server"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</form>
</body>
HACIENDO DOBLE CLIC ESCRIBA EL SIGUIENTE CODIGO
Sub submit(ByVal sender As Object, ByVal e As EventArgs)
p1.InnerHtml = "<b>Usted escribio:</b> " & textarea1.Value
End Sub




AUTOR: ING. PEDRO VELEZ DUQUE MSC. 25

P.O.O. III PROGRAMACION WEB CON ASP.NET
7.- ESTA APLICACIN SE DESARROLLA UNA CALCULADORA BASICA CON EL
SIGUIENTE DISEO

PRIMERO SE DISEA LOS CONTROLES HTML MEDIANTE CODIGO
<form id="form1" runat="server">
NUMERO 1
<asp:textbox ID="numeros1" runat="server"/>
<br />
NUMERO 2
<asp:textbox ID="numeros2" runat="server" />
<br />
<br />
<asp:label ID="alvi" runat="server">0</asp:Label>
<br />
<asp:button ID="Botonok" Text="sumar" OnClick="sumar"
runat="server" />
<asp:button ID="Buttonr" Text="restar" OnClick="restar"
runat="server" />
<asp:button ID="Button1" Text="Multiplicar" OnClick="multiplicar"
runat="server" />
<asp:button ID="Button2" Text="Dividir" OnClick="dividir"
runat="server" />
</form>
HACIENDO CLIC EN EL FORMULARIO SE ESCRIBE LAS SIGUIENTES FUNCIONES
PARA SER INVOCADAS
Function AddNums(ByVal Num1 As Single, ByVal Num2 As Single) As
Single
AddNums = Num1 + Num2
End Function
Function subNums(ByVal Num1 As Single, ByVal Num2 As Single) As
Single
subNums = Num1 - Num2
End Function
Function prodNums(ByVal Num1 As Single, ByVal Num2 As Single) As
Single
prodNums = Num1 * Num2
End Function
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 26

P.O.O. III PROGRAMACION WEB CON ASP.NET
Function diviNums(ByVal Num1 As Single, ByVal Num2 As Single) As
Single
If Num2 = 0 Then
MsgBox("error en la division")
End If
diviNums = Num1 / Num2
End Function

Sub sumar(ByVal Sender As Object, ByVal E As EventArgs) Handles
Botonok.Click
alvi.Text = "Resultado: " & AddNums(numeros1.Text,
numeros2.Text)
End Sub

Sub restar(ByVal Sender As Object, ByVal E As EventArgs) Handles
Botonok.Click
alvi.Text = "Resultado: " & subNums(numeros1.Text,
numeros2.Text)
End Sub



Sub multiplicar(ByVal Sender As Object, ByVal E As EventArgs) Handles
Botonok.Click, Button1.Click
alvi.Text = "Resultado: " & prodNums(numeros1.Text,
numeros2.Text)
End Sub

Protected Sub dividir(ByVal sender As Object, ByVal e As
EventArgs) Handles Button2.Click
alvi.Text = "Resultado: " & diviNums(numeros1.Text,
numeros2.Text)
End Sub
8.- ESCRIBIR UNA APLICACIN QUE ORDENE NUMEROS EN FORMA ASCENDENTE O
DESCENDENTE DE ACUERDO CON EL SIGUIENTE DISEO

AUTOR: ING. PEDRO VELEZ DUQUE MSC. 27

P.O.O. III PROGRAMACION WEB CON ASP.NET
SE ESTABLECE A LOS CONTROLES TEXTBOXS LOS NOMBRES EN LA PROPIEDAD ID
COMO: NUM1,NUM2,NUM3, ASCENDENTE, DESCENDENTE
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
NUM1.Focus()
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
EventArgs) Handles Button1.Click
Dim N1, N2, N3, MENOR As Integer
N1 = NUM1.Text
N2 = NUM2.Text
N3 = NUM3.Text
MENOR = N1
If N2 < MENOR Then
MENOR = N2
N2 = N1
N1 = MENOR
End If
If N3 < MENOR Then
MENOR = N3
N3 = N1
N1 = MENOR
End If
If N3 < N2 Then
MENOR = N3
N3 = N2
N2 = MENOR
End If
ASCENDENTE.Text = Convert.ToString(N1) + vbCrLf +
Convert.ToString(N2) + vbCrLf + Convert.ToString(N3)
DESCENDENTE.Text = Convert.ToString(N3) + vbCrLf +
Convert.ToString(N2) + vbCrLf + Convert.ToString(N1)
End Sub

Protected Sub Button2_Click(ByVal sender As Object, ByVal e As
EventArgs) Handles Button2.Click
NUM1.Text = ""
NUM2.Text = ""
NUM3.Text = ""
ASCENDENTE.Text = ""
DESCENDENTE.Text = ""
End Sub




AUTOR: ING. PEDRO VELEZ DUQUE MSC. 28

P.O.O. III PROGRAMACION WEB CON ASP.NET
9.- ELABORAR UNA APLICACIN QUE DETERMINE SI UN NUMERO ES PRIMO

DESPUES DE DISEAR SE PROCEDE A ESTABLECER LOS NOMBRES AL TEXTBOX
COMO NUM Y EL LABEL COMO MEN Y LUEGO SE ESCRIBE EL SIGUIENTE CODIGO
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
NUM.Focus()
End Sub

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
EventArgs) Handles Button1.Click
Dim N, CONT As Integer
N = Val(NUM.Text)
For CONT = 2 To N - 1
If N Mod CONT = 0 Then
MEN.Text = "EL NUMERO NO ES PRIMO"
Return
End If
Next
MEN.Text = "EL NUMERO ES PRIMO"
End Sub
10.- ELABORAR UNA PAGINA QUE CALCULE EL VALOR A PAGAR POR UNAS
FOTOSCOPIAS, INGRESANDO LA CANTIDAD Y EL PRECIO UNITARIO DE LAS
COPIAS. A CONTINUACION SE REALIZA EL SIGUIENTE DISEO

AUTOR: ING. PEDRO VELEZ DUQUE MSC. 29

P.O.O. III PROGRAMACION WEB CON ASP.NET
SE ESTABLECE LOS NOMBRES A LOS TEXTBOX CONO CANT, PRE, A LOS LABELS
COMO MT, MTD, MN QUE PRESENTAN LOS CALCULOS. ENSEGUIDA SE PRESENTA EL
CODIGO.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
CANT.Focus()
End Sub

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
EventArgs) Handles Button1.Click
Dim TASA, MTOTAL, MDESC, MNETO As Double
MTOTAL = Val(CANT.Text) * Val(PRE.Text)
Select Case Convert.ToUInt32(CANT.Text)
Case Is < 50
TASA = 0.0
Case Is < 100
TASA = 0.05
Case Is < 500
TASA = 0.07
Case Is >= 500
TASA = 0.1
End Select
MDESC = MTOTAL * TASA
MNETO = MTOTAL - MDESC
MT.Text = Format(MTOTAL, "CURRENCY")
MTD.Text = Format(MDESC, "CURRENCY")
MN.Text = Format(MNETO, "CURRENCY")
End Sub



Protected Sub Button2_Click(ByVal sender As Object, ByVal e As
EventArgs) Handles Button2.Click
CANT.Text = ""
PRE.Text = ""
MT.Text = ""
MTD.Text = ""
MN.Text = ""
CANT.Focus()
End Sub







AUTOR: ING. PEDRO VELEZ DUQUE MSC. 30

P.O.O. III PROGRAMACION WEB CON ASP.NET
CREACION DE LECTURA, ESCRITURA DE INFORMACION EN ARCHIVOS
En muchas situaciones es necesario almacenar informacin en el
servidor, tenemos dos alternativas, si la cantidad de datos a
almacenar es pequea podemos utilizar un archivo de texto para ello
(en la prxima clase veremos como almacenar en una base de datos)
Un archivo de texto no requiere grandes recursos del servidor.
Creacin y carga del archivo de texto.
Confeccionaremos un libro de visitas de un sitio web. La pgina
principal dispondremos de dos hipervnculos (HyperLink), el primero
ir al formulario de carga y el segundo al listado del contenido del
archivo. La pgina Default.aspx:Pagina principal

En esta pagina utilizamo el control hiperlink para ello clicamos
sobre el control del cuadro de herramientas

Una vez colocamos el texto y luego utilizamos la propiedad
navigateurl del control y luego hacemos clic en .


En el siguiente cuadro escogemos la pagina de destino y luego hago
clic en aceptar.

AUTOR: ING. PEDRO VELEZ DUQUE MSC. 31

P.O.O. III PROGRAMACION WEB CON ASP.NET
EN LA SIGUIENTE PAGINA SE EFECTUA EL SIGUIENTE DISEO. SE UTILIZA
CONTROLES WEB, TABLAS, HIPERLINK QUE REGRESA A LA PAGINA PRINCIPAL

Despues del diseo se procede a codificar el boton confirmar para
crear el archivo y que escriba en el.
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim ARCH As New STREAMWRITER(Server.MapPath(".") & "/" &
"VISITAS.TXT", True)
ARCH.WriteLine("<BR />")
ARCH.WriteLine("NOMBRE" & TextBox1.Text)
ARCH.WriteLine("<BR />")
ARCH.WriteLine("PAIS" & TextBox2.Text)
ARCH.WriteLine("<BR />")
ARCH.WriteLine("COMENTARIOS" & TextBox3.Text)
ARCH.WriteLine("<BR />")
ARCH.WriteLine("<BR />")
ARCH.Close()
Label1.Text = "DATOS REGSITRADOS"
End Sub
Luego de escribir el codigo se ejecuta la aplciacion en el navbegador
y despues de completar el formulario aparece un mensaje datos
registrados.






AUTOR: ING. PEDRO VELEZ DUQUE MSC. 32

P.O.O. III PROGRAMACION WEB CON ASP.NET
Lectura del archivo de texto.
Creamos una pgina 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 bsicas para hacer los saltos de lnea y lneas separadoras
entre comentarios, solo nos queda leer el archivo e ir almacenndolo
en la Label para que lo muestre.
Podemos disponer un control de tipo HyperLink para retornar a la
pgina principal.

El cdigo 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 lnea
del archivo:
Dim linea As String
linea = arch.ReadLine
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 33

P.O.O. III PROGRAMACION WEB CON ASP.NET
El mtodo ReadLine de la clase StreamReader retorna el contenido de
toda una lnea del archivo de texto. En caso que no haya ms lneas
en el archivo de texto el mtodo ReadLine retorna el valor Nothing.
El while nos permite recorrer todo el archivo y cargar cada lnea
leda 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()
El siguiente codigo permite la lectura del archivo creado en la
pagina anterior
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
Dim ARCH As New StreamReader(Server.MapPath(".") & "/" &
"VISITAS.TXT")
Dim LINEAS As String
LINEAS = ARCH.ReadLine
Do While Not LINEAS Is Nothing
Label1.Text = Label1.Text & LINEAS
LINEAS = ARCH.ReadLine
Loop
ARCH.Close()
End Sub
CONTADOR DE VISITAS
Confeccionaremos ahora un simple contador de pginas utilizando un archivo
de texto de una sola lnea. Se disea una pagina que contenga una
contador de visitas, cada vez que un navegador solicite la pagina
mostraremos el contador. Se dispone de una label para mostrar el
valor del contador que se almacena en el archivo de texto

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:

AUTOR: ING. PEDRO VELEZ DUQUE MSC. 34

P.O.O. III PROGRAMACION WEB CON ASP.NET

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
If File.Exists(Server.MapPath(".") & "/" & "CONTADOR.TXT")
Then
Dim ARCH1 As New StreamReader(Server.MapPath(".") & "/" &
"CONTADOR.TXT")
Dim CONTA As Integer
CONTA = ARCH1.ReadLine
CONTA = CONTA + 1
ARCH1.Close()
Dim ARCH2 As New StreamWriter(Server.MapPath(".") & "/" &
"CONTADOR.TXT")
ARCH2.WriteLine(CONTA)
ARCH2.Close()
Label1.Text = CONTA
Else
Dim ARCH As New StreamWriter(Server.MapPath(".") & "/" &
"CONTADOR.TXT")
ARCH.WriteLine("1")
ARCH.Close()
Label1.Text = "1"
End If
End Sub

Mediante un if verificamos si existe el archivo que almacena el
contador (la clase File tiene un mtodo esttico 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 lnea:
Dim arch1 As New StreamReader(Me.Server.MapPath(".") &
"/" & "contador.txt")
Dim conta As Integer
conta = arch1.ReadLine
conta = conta + 1
arch1.Close()
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 35

P.O.O. III PROGRAMACION WEB CON ASP.NET
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"

















AUTOR: ING. PEDRO VELEZ DUQUE MSC. 36

P.O.O. III PROGRAMACION WEB CON ASP.NET
FILE UPLOAD
Una actividad muy comn en un sitio web es el envo de archivos desde
el cliente y su almacenamiento el el servidor.
Componente FileUpload
La componente FileUpload encapsula el envo y recepcin de un archivo
en el servidor web.
Confeccionaremos una serie de pginas web para aprender a utilizar
los mtodos y propiedades de la clase FileUpload.
Crear un webform e implementar la siguiente interface:



Disponemos en el webform un objeto de la clase FileUpload que se
encuentra en la pestaa de componentes Estndar
Para el evento clic de botn confirmar implementamos el siguiente
cdigo.
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
EventArgs) Handles Button1.Click
FileUpload1.SaveAs(Server.MapPath(".") & "\" &
FileUpload1.FileName)
Label1.Text = "ARCHIVO SUBIDO"
End Sub
El mtodo SaveAs permite grabar el archivo que se subi al servidor.
Debemos indicarle el camino del directorio donde se almacena y el
nombre del archivo. Para obtener el path donde se almacena la pgina
ASPX actual el objeto Server tiene el mtodo MapPath y para obtener
el nombre del archivo la propiedad llamada FileName.
Con esta nica lnea tenemos registrado en el servidor el archivo que
se envi desde el navegador.El archivo esta en la carpeta del sitio.
Almacenar el archivo en un subdirectorio.
Es una buena costumbre evitar almacenar los archivos que suben los
usuarios en la misma carpeta donde se encuentran la pginas dinmicas
ASPX.
Para almacenar los archivos en otro directorio primero debemos crear
el directorio (por ejemplo creemos una carpeta imgenes en el
directorio donde se aloja el sitio)
Creamos un nuevo webform (Default2.aspx) y creamos el siguiente
cdigo para el evento clic del objeto Button:
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 37

P.O.O. III PROGRAMACION WEB CON ASP.NET

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
EventArgs) Handles Button1.Click
FileUpload1.SaveAs(Server.MapPath(".") & "\IMAGENES\" &
FileUpload1.FileName)
Label1.Text = "ARCHIVO SUBIDO"
End Sub


La carpeta imagenes debemos crearla en forma manual desde el
administrador de archivos del sistema operativo. Luego cada archivo
que se suba al servidor se almacenar en dicha carpeta.

Mostrar propiedades del archivo subido.
Crearemos un tercer webform para ver como accedemos a distintas
propiedades de la clase FileUpload.
Disponemos sobre el webform un objeto de la clase FileUpload, un
Button y cuatro Label.
Mostraremos el tamao del archivo en bytes. El nombre del archivo y
finalmente el tipo de archivo.
El cdigo fuente para el evento clic es:.

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
EventArgs) Handles Button1.Click
FileUpload1.SaveAs(Server.MapPath(".") & "\" & FileUpload1.FileName)
Label1.Text = "ARCHIVO SUBIDO"
Label2.Text = FileUpload1.PostedFile.ContentLength
Label3.Text = FileUpload1.PostedFile.FileName
Label4.Text = FileUpload1.PostedFile.ContentType
End Sub
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 38

P.O.O. III PROGRAMACION WEB CON ASP.NET


La propiedad PostedFile del control FileUpload almacena en:
ContentLength (el tamao del archivo en bytes)
ContentType (El tipo de archivo)
El tamao del archivo nos puede ser til si queremos limitar el peso
del mismo

Validar la existencia de otro archivo con el mismo nombre y
publicacion de un archivo de imagen .
Puede suceder que en la carpeta donde se almacena el archivo exista
otro con el mismo nombre. Esto conlleva a que se pise el archivo
antiguo por el nuevo.
Ademas podemoa observar como podemos mostrar una imagen subida al
servidor en el webform.
Veamos en el webform donde validamos que no exista otro archivo con
el mismo nombre, en caso afirmativo no permitimos su almacenamiento e
informamos de tal situacin y ademas en el control image con la
propiedad imageurl se carga la imagen a almacenar :




AUTOR: ING. PEDRO VELEZ DUQUE MSC. 39

P.O.O. III PROGRAMACION WEB CON ASP.NET
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
EventArgs) Handles Button1.Click
If File.Exists(Me.MapPath(".") & "/" & FileUpload1.FileName) Then
Label1.Text = "ARCHIVO EXISTENTE"
Else
FileUpload1.SaveAs(Server.MapPath(".") & "\" & FileUpload1.FileName)
Label1.Text = "ARCHIVO ALMACENADO"
Image1.ImageUrl = FileUpload1.FileName
End If
End Sub


El mtodo esttico Exists de la clase File (Imports System.IO)retorna
true si ya existe un archivo con el nombre que le pasamos como
parmetro, en caso negativo retorna false.
En caso que no exista el archivo procedemos a efectuar la
registracin del mismo en la carpeta de nuestro proyecto.





AUTOR: ING. PEDRO VELEZ DUQUE MSC. 40

P.O.O. III PROGRAMACION WEB CON ASP.NET

USO DE CONTROLES DE VALIDACION ASP.NET
Hay seis controles Web para la validacin de datos de entrada que se
pueden incorporar en un Formulario Web.
RequiredFieldValidator: Facilita la validacin de un dato del
formulario chequeando que el mismo tenga algn valor.
RangeValidator: Facilita la validacin de un dato del formulario
contra un valor mnimo y mximo.
CompareValidator: Facilita la validacin de un dato del formulario
contra un valor fijo u otro campo del formulario.
CustomValidator: Facilita la validacin de un dato del formulario
usando una subrutina propia.
RegularExpressionValidator: Facilita la validacin de un dato del
formulario contra una expresin.
ValidationSumary: Agrupa los mensajes de error de otros controles en
una parte de la pgina.
Todos los controles de validacin tienen tres propiedades
fundamentales: ControlToValidate, Text y IsValid. Todos los controles
derivan de la clase BaseValidator.
La propiedad ControlToValidate contiene la referencia del control del
formulario que queremos validar.
La propiedad Text almacena el mensaje de error que queremos que se
muestre en la pgina.
Por ltimo la propiedad IsValid almacena True en caso que el control
pase el test de validacin.
Cuando empleamos controles de validacin con el Explorer 4.0 o
superior, los controles automticamente usan funciones en JavaScript
en el cliente. Esto significa que los controles pueden inmediatamente
mostrar los mensajes de error en el browser mientras el usuario est
completando el formulario. Si hay algn error en la pgina el cdigo
JavaScript previene que el usuario pueda enviar los datos al
servidor.
En caso de emplear navegadores ms antiguos los controles que veremos
seguirn funcionando, pero la validacin se realizar en el servidor.

Control: RequiredFieldValidator
Para probar este control haremos una pgina que solicite el nombre de
usuario (mostraremos un error si el operador no ingresa texto en el
TextBox)
La interface visual es la siguiente:

AUTOR: ING. PEDRO VELEZ DUQUE MSC. 41

P.O.O. III PROGRAMACION WEB CON ASP.NET
El mensaje en rojo debe aparecer si presionamos el botn Confirmar
y no se ingres texto en el TextBox.
En el Visual Studio .Net confeccionamos el formulario web disponiendo
uno control de tipo TextBox, un Button y un RequiredFieldValidator
que se encuentra en la pestaa Validacin del Cuadro de
herramientas.
El control RequiredFieldValidator es importante inicializar las
siguientes propiedades:

Cuando ejecutemos la pgina podemos ver el cdigo que llega al
navegador (en ella veremos las funciones en JavaScript que
automticamente el ASP.NET nos crea para facilitar la validacin)
Luego si queremos que al presionar el botn se redireccione a otra
pgina en caso de haber ingresado un nombre de usuario debemos
codificar el mtodo Clic para dicho botn
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Button1.Click
If Me.IsValid Then
Me.Response.Redirect("Default2.aspx")
End If
End Sub
End Class
La propiedad IsValid del WebForm almacena true si todos los controles
de validacin dispuestos en el formulario se validan correctamente.
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 42

P.O.O. III PROGRAMACION WEB CON ASP.NET
Es decir en este problemas si se ingresa algn caracter en el control
TextBox luego se puede pasar a la pgina Default2.aspx.

Control: RangeValidator
El control RangeValidator especifica un valor mnimo y mximo para un
control TextBox. Podemos utilizar el control para chequear el rango
de enteros, fechas, cadenas o valores reales.
Las propiedades ms importantes del control son:
ControlToValidate El campo del formulario a validar.
MinimumValue El valor mnimo a validar en el rango de valores.
MaximumValue El valor mximo a validar en el rango de valores.
Text El mensaje de error a mostrar.
Type El tipo de comparacin a ejecutar (valores posibles: String,
Integer, Double, Date, Currency)
Para probar este control haremos una pgina que solicite ingresar la
edad de una persona que se postula para un trabajo (la misma debe
estar en el rango de 18 a 35 aos)
Disponemos sobre el formulario los siguientes objetos: Label,
TextBox, Button y un RangeValidator. La interface que debemos
implementar es la siguiente:

El objeto RangeValidator lo debemos configurar con los siguientes
valores:
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 43

P.O.O. III PROGRAMACION WEB CON ASP.NET

Si ejecutamos la pgina veremos que el mensaje aparece si ingresamos
una edad que est fuera del rango de 18 a 35 aos.
El cdigo a implementar al presionar el botn confirmar es el
siguiente:

Partial Class Default2
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Button1.Click

If Me.IsValid Then
Me.Response.Redirect("Default3.aspx")
End If
End Sub
End Class

Es decir redireccionamos a la prxima pgina en caso que todos los
controles de validacin del formulario se verifiquen correctos (en
este problema solo tenemos un control de tipo RangeValidator, pero en
muchos casos veremos que en un formulario puede haber ms de un
control de validacin)
Si quisiramos solo validar un control determinado del WebForm la
condicin sera:

If Me.RangeValidator1.IsValid Then
Me.Response.Redirect("Default3.aspx")
End If
Es decir verificamos la propiedad IsValid del control RangeValidator
(si tenemos un solo control en el formulario preguntar por la
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 44

P.O.O. III PROGRAMACION WEB CON ASP.NET
propiedad IsValid del webform o del RangeValidator el resultado ser
idntico)

Control: CompareValidator
El control CompareValidator permite comparar un valor de un control
con otro control o comparar el valor de un control con un valor fijo.
Las propiedades ms importantes son:

ControlToValidate El campo del formulario a validar.

ControlToCompare El campo del formulario contra el cual se efecta
la comparacin.

Operator El operador a utilizarse en la comparacin (los valores
posibles son Equal, NotEqual, GreaterThan, GreaterThanEqual,
LessThan, LessThanEqual y DataTypeCheck)

Text El mensaje de error a mostrar.

Type El tipo de comparacin a ejecutar (valores posibles String,
Integer, Double, Date, Currency)

ValueToCompare El valor fijo a comparar.

Para probar este control implementaremos una pgina que realizara el
alta de la tabla usuarios (debe permitir el ingreso del nombre de
usuario y su clave, esta ltima dos veces, con el objetivo de
asegurarse que la ingres correctamente), emplearemos un objeto de la
clase CompareValidator para validar el ingreso repetido de la clave.
La interface visual de la pgina es:


Al objeto CompareValidator le configuramos las propiedades de la
siguiente manera:
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 45

P.O.O. III PROGRAMACION WEB CON ASP.NET

Es importante inicializar la propiedad ControlToValidate con el
objeto TextBox que carga la segunda clave, luego que el operador
carga la clave se procede a validar si el texto ingresado coincide en
el TextBox que hemos inicializado la propiedad ControlToCompare.
El cdigo a implementar al presionar el botn Confirmar:
Partial Class Default3
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Button1.Click
If Me.IsValid Then
Me.Response.Redirect("Default4.aspx")
End If
End Sub
End Class

Control: CustomValidator
El control CustomValidator permite validar el campo de un formulario
con una funcin de validacin propia. Debemos asociar nuestro control
CustomValidator con un evento propio.
Para probar este control implementaremos una pgina que solicite el
ingreso de un nmero mltiplo de 5, en caso de ingresar un valor
incorrecto mostraremos un mensaje de error. La interface a
implementar es la siguiente:
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 46

P.O.O. III PROGRAMACION WEB CON ASP.NET

Primero configuramos las propiedades del objeto CustomValidator con:

Ahora debemos codificar el evento ServerValidate que tiene el objeto
CustomValidator1, a esto lo hacemos desde la ventana de cdigo y lo
podemos generar automticamente haciendo doble clic sobre el control
en la ventana de diseo:

Protected Sub CustomValidator1_ServerValidate(ByVal source As Object,
ByVal args As _
System.Web.UI.WebControls.ServerValidateEventArgs) Handles
CustomValidator1.ServerValidate
Dim valor As Integer = args.Value
If valor Mod 5 = 0 Then
args.IsValid = True
Else
args.IsValid = False
End If
End Sub
El parmetro args tiene dos propiedades fundamentales, una almacena
el valor del control que estamos validando y otra llamada IsValid que
debemos asignarle el resultado de nuestra validacin.
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 47

P.O.O. III PROGRAMACION WEB CON ASP.NET
En nuestro ejemplo almacenamos el nmero ingresado en la variable
valor, luego mediante el operador Mod (resto de una divisin)
verificamos si es cero, en caso afirmativo inicializamos la propiedad
IsValid del objeto args con el valor True, en caso contrario, es
decir que el nmero ingresado no sea un mltiplo de 5 almacenamos el
valor False.
Cuando se presiona el botn confirmar tenemos:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
If Me.IsValid Then
Me.Response.Redirect("Default5.aspx")
End If
End Sub

Control: RegularExpressionValidator
El control RegularExpressionValidator permite validar el valor de un
campo de un formulario con un patrn especfico, por ejemplo un
cdigo postal, un nmero telefnico, una direccin de mail, una URL
etc.
El planteo de un RegularExpression es bastante compleja, pero el
Visual Studio .Net provee una serie de expresiones regulares
preconfiguradas.
Para probar este control, haremos una pgina que solicite el ingreso
de un mail y mostraremos un error en caso que el usuario ingrese un
mail mal formado.
La interface visual de la pgina es la siguiente:

Al objeto de la clase RegularExpressionValidator le configuramos las
propiedades con los siguientes valores:
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 48

P.O.O. III PROGRAMACION WEB CON ASP.NET

Si ejecutamos el programa podremos ver que al abandonar el foco del
TextBox aparecer el mensaje de error en caso de ingresar un mail
incorrecto:

Partial Class Default5
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
If Me.IsValid Then
Me.Response.Redirect("Default6.aspx")
End If
End Sub
End Class


Control: ValidationSummary
Cuando tenemos formularios con gran cantidad de controles puede
llegar a ser dificultoso ubicar los errores en la pgina. El
Framework de la .Net trae otra clase llamada ValidationSumary que
muestra todos los errores de la pgina agrupados en una parte de
pantalla. Para utilizar el control ValidationSummary es necesario
fijar el valor de la propiedad ErrorMessage para cada control de
validacin que tiene la pgina. Es importante no confundir la
propiedad Text que aparece en la misma posicin donde la disponemos
con la propiedad ErrorMesage que contiene el mensaje de error que
mostrar el control ValidationSummary.
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 49

P.O.O. III PROGRAMACION WEB CON ASP.NET
Para probar este control haremos una pgina que solicite la carga del
nombre de usuario y su clave en forma obligatoria (mostrando un
mensaje de error en caso de dejar vaco los TextBox)
La interface de la pgina es la siguiente:


Debemos disponer los siguientes objetos sobre el formulario:
1 Button, 2 TextBox, 2 RequiredFieldValidator y un objeto de la clase
ValidationSummary.
La propiedad text de los objetos RequiredFieldValidator las
inicializamos con un (*) asterisco y las propiedades ErrorMessage con
las cadenas: Debe ingresar el nombre de usuario y Debe ingresar la
clave respectivamente. En cuanto al objeto de la clase
ValidationSummary no debemos hacer ninguna configuracin especifica,
solo ubicarlo dentro de la pgina.

PROYECTO COMBINADO DESARROLLADO (ARCHIVOS Y CONTROLES DE VALIDACION)
SE PROPONE DESARROLLAR UN SITIO WEB CON DOS PAGINAS, UNA QUE PERMITA
GUARDAR INFORMACION DE POSTULANTES DE UNA AGENCIA DE EMPLEO Y OTRA
QUE MOSTRAR LOS QUE YA ESTAN EN UNA LISTA. PRIMERAMENTE SE DEBE
DISEAR LA PRIMERA PAGINA CON LOS CONTROLES WEB VISTOS ANTERIORMENTE
(TEXTBOX,CHECKBOX,RADIOBUTTON Y BUTTON) Y POSTERIORMENTE ALMACENARLOS
EN ARCHIVO COMO VISITAS.TXT .
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 50

P.O.O. III PROGRAMACION WEB CON ASP.NET

LUEGO SE PROCEDE A CODIFICAR, A CONTINUACION ES EL SIGUIENTE:
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
EventArgs) Handles Button1.Click
Dim a As New StreamWriter(Server.MapPath(".") & "/" &
"visitas.txt", True)
a.WriteLine("NOMBRES " & TextBox1.Text)
a.WriteLine("<BR>")
a.WriteLine("APELLIDOS " & TextBox2.Text)
a.WriteLine("<BR>")
a.WriteLine("EMAIL " & TextBox3.Text)
a.WriteLine("<BR>")
a.WriteLine("CLAVE " & TextBox4.Text)
a.WriteLine("<BR>")
If CheckBox1.Checked Then
a.WriteLine("IDIOMA1: " & "INGLES")
a.WriteLine("<BR>")
ElseIf CheckBox2.Checked Then
a.WriteLine("IDIOMA2: " & "ALEMAN")
a.WriteLine("<BR>")
ElseIf CheckBox3.Checked Then
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 51

P.O.O. III PROGRAMACION WEB CON ASP.NET
a.WriteLine("IDIOMA3: " & "ITALIANO")
a.WriteLine("<BR>")
ElseIf CheckBox4.Checked Then
a.WriteLine("IDIOMA4: " & "MANDARIN")
a.WriteLine("<BR>")
Else
Label1.Text = "DEBE TENER AL MENOS ESCOJER UN IDIOMA"
End If
If RadioButton1.Checked Then
a.WriteLine("ESTUDIOS: " & "SECUNDARIOS")
a.WriteLine("<BR>")
ElseIf RadioButton2.Checked Then
a.WriteLine("ESTUDIOS: " & "TECNICO")
a.WriteLine("<BR>")
ElseIf RadioButton2.Checked Then
a.WriteLine("ESTUDIOS: " & "SUPERIOR")
a.WriteLine("<BR>")
Else
Label1.Text = "DEBE TENER AL MENOS ESCOJER UN IDIOMA"
End If
a.WriteLine("METAS " & TextBox5.Text)
a.WriteLine("<BR>")
a.Close()
Response.Redirect("WEBFORM1.ASPX")
End Sub
En seguida se procede a ubicar los controles label y hiperlink para
ver los datos almacenados y regresar a la pagina principal

Inmediatamente se codificar lo siguiente:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
Dim A As New StreamReader(Server.MapPath(".") & "/" &
"visitas.txt")
Dim L As String
L = A.ReadLine
Do While Not L Is Nothing
Label1.Text = Label1.Text & L
L = A.ReadLine
Loop
A.Close()
End Sub
Una vez probado que realiza la escritura y lectura del aerchivo se
procede a ubicar los controles de validacion. Para los controles
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 52

P.O.O. III PROGRAMACION WEB CON ASP.NET
textbox se utiliza el control RequiredFieldValidator, estableciendo
las propiedades.

Para el correo electronico se utiliza el control
RegularExpressionValidator

Finalmente utilizamos el control ValidationSummary que trabaja con la
propiedad ErrorMessage de los controles de validacion antes ubicados.

Cookies y Variables de session
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 53

P.O.O. III PROGRAMACION WEB CON ASP.NET
Se crea una pagina que ingrese un valor y crea la cookie y la otra
pagina imprime la cookie creada en la primera pagina

El codigo de la primera pagina se desarrolla en el boton confirmar
Partial Class _Default
Inherits System.Web.UI.Page

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim cookie1 As New HttpCookie("edad", TextBox1.Text)
cookie1.Expires = #12/25/2015#
Response.Cookies.Add(cookie1)
Label1.Text = "se creo la coiokie"
End Sub
End Class






AUTOR: ING. PEDRO VELEZ DUQUE MSC. 54

P.O.O. III PROGRAMACION WEB CON ASP.NET

En la seguna pagina, su codigo se le escribe en Page load que es el
siguiente:
Partial Class Default2
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
If Request.Cookies("edad") Is Nothing Then
Label1.Text = "no existe la cookie"
Else
Label1.Text = Request.Cookies("edad").Value
End If
End Sub
End Class

Mostrar el ultimo mail ingresado en un control textbox
El objeto del siguiente ejemplo es la creacin de una pgina que
solicite el ingreso del mail de una persona, si en otro momento ya lo
haba ingresado mostrarlo precargado en el control TextBox.
Emplearemos una cookie persistente para almacenar el mail ingresado.




AUTOR: ING. PEDRO VELEZ DUQUE MSC. 55

P.O.O. III PROGRAMACION WEB CON ASP.NET
Partial Class Default3
Inherits System.Web.UI.Page

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim COOKIE1 As New HttpCookie("MAIL", TextBox1.Text)
COOKIE1.Expires = #12/25/2012#
Response.Cookies.Add(COOKIE1)
Response.Redirect("DEFAULT4.ASPX")
End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
If Me.IsPostBack = False Then
If Me.Request.Cookies("MAIL") IsNot Nothing Then
TextBox1.Text = Request.Cookies("MAIL").Value
End If
End If
End Sub
End Class

En el mtodo Load de la pgina verificamos si es la primera vez que
pedimos la pgina (es decir que no se recarga por presionar el botn)
y si existe la cookie, en dicho caso cargamos el contenido de la
propiedad Text del control TextBox.
Luego de ingresar un mail en el control TextBox y presionar el botn
Confirmar se crea una cookie llamada mail y almacena el valor
ingresado en el control TextBox. Seguidamente redirecciona a la
pgina Default4.aspx. Si Luego volvemos a ejecutar la pgina
Default3.aspx veremos que el control TextBox aparece inicializado con
el ltimo mail ingresado (Aunque apaguemos y prendamos la mquina el
ltimo mail aparecer dentro del control)




AUTOR: ING. PEDRO VELEZ DUQUE MSC. 56

P.O.O. III PROGRAMACION WEB CON ASP.NET
Variables de session
Para ilustrar el uso de variables de sesin haremos una serie de
pginas donde en la primera ingresaremos el nombre de usuario y
clave, en la segunda los listaremos, y en esta dispondremos un
hipervnculo para dirigirnos a una tercera pgina, donde mostraremos
nuevamente el contenido de las variables de sesin.
Pgina 1:
Esta pgina solicita la carga de los dos datos y redirecciona a la
segunda pgina, la interface visual es la siguiente:


El codigo del boton confirmar de la primiera pagina es el siguiente:
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
'Almacenamos las dos variables de sesion
Me.Session("usuario") = Me.TextBox1.Text
Me.Session("clave") = Me.TextBox2.Text
'Redireccionamos a la segunda pagina
Response.Redirect("Default2.aspx")
End Sub

Pgina 2:
Tiene por objetivo mostrar los contenidos de las dos variables de
sesin. Adems hay un hipervnculo (objeto de la clase HyperLink) que
llama a la tercera pgina. La interface visual es:

AUTOR: ING. PEDRO VELEZ DUQUE MSC. 57

P.O.O. III PROGRAMACION WEB CON ASP.NET
El codigo fuente de esta pagina es el siguiente
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
'Mostramos el contenido de las dos variables
'de sesin en las Label
Me.Label1.Text = Me.Session("usuario")
Me.Label2.Text = Me.Session("clave")
End Sub
Es decir inicializamos las Label con los contenidos de las variables
de sesin que estn almacenadas en memoria y administradas por el
servidor Web.

Pgina 3:
Por ltimo esta tercer pgina tiene por objetivo mostrar nuevamente
el contenido de las variables de sesin.
La interface es:
El codigo fuente de esta pagina es el siguiente










Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
'Introducir aqu el cdigo de usuario
'y la clave
Label1.Text = Me.Session("usuario")
Label2.Text = Me.Session("clave")
End Sub




AUTOR: ING. PEDRO VELEZ DUQUE MSC. 58

P.O.O. III PROGRAMACION WEB CON ASP.NET
Master Page
Una Master Page o Pgina Principal es una estructura base para un
conjunto de pginas pertenecientes a un mismo sitio Web. Este
esqueleto base se almacena en un archivo independiente y luego es
heredado por otras pginas que requieren esa estructura base.
Un ejemplo donde utilizar una pgina Master Page es la definicin de
la cabecera y el pie del sitio, luego todas las otras pginas del
sitio heredan de dicha pgina. La ventaja fundamental en este ejemplo
es que si hay cambios en la cabecera del sitio solo debemos hacerlos
en la pgina principal y con esto se propaga en todas las pginas que
heredan de la misma.
Problema 1
Confeccionar un sitio que permita mostrar un conjunto de direcciones
web agrupados por tema. Disponer una lista de hipervnculos con los
siguientes temas: Buscadores Peridicos Blog
Mostrar en la parte inferior de la pgina un mensaje de Copyright.
Para crear un sitio que utilice una Master Page debemos seguir una
serie de pasos:
a Creamos un nuevo sitio web: Archivo -> Nuevo Sitio Web y
seleccionamos la plantilla " Sitio web vaco "
b En la ventana del Explorador de soluciones presionamos el botn
derecho del mouse y seleccionamos Agregar nuevo elemento y
seleccionamos Pgina principal (en ingles Master Page)
Las pginas Master Page tienen extensin master en lugar de aspx.
Lo primero que vemos que es distinto con un WebForm es la directiva
Master en lugar de Page en vista codigo:
<%@ Master Language="VB" CodeFile="MasterPage.master.vb"
Inherits="MasterPage" %>
Ahora agregaremos los hipervnculos en la parte superior y el pi de
pgina

AUTOR: ING. PEDRO VELEZ DUQUE MSC. 59

P.O.O. III PROGRAMACION WEB CON ASP.NET
Luego veremos que todas las pginas que hereden de esta mostrarn los
tres hipervnculos en la parte superior y el mensaje de Copyright en
la parte inferior.
Agregar un Web Forms que herede del Master Page que hemos creado.
En la ventana del Explorador de soluciones presionamos el botn
derecho del mouse y seleccionamos Agregar nuevo elemento y
seleccionamos Web Forms. Es importantsimo ahora seleccionar el
checkbox Seleccionar la pgina principal, tambin podemos cambiar
el nombre por defecto de la pgina (podemos llamarla Default.aspx),
luego de presionar el botn Agregar y si seleccionamos correctamente
Seleccionar la pgina principal aparecer un nuevo dilogo para
seleccionar el Master Page del cual hereda nuestro Web Form.

El cdigo generado en forma automtico es el siguiente:
<%@ Page Title="" Language="VB" MasterPageFile="~/MasterPage.master"
AutoEventWireup="false"
CodeFile="Default.aspx.vb" Inherits="_Default" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head"
Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1"
Runat="Server">
</asp:Content>
Como podemos observar no contiene las marcas HTML de la cabecera y el
cuerpo, ya que se heredan de la Master Page.
El cdigo propio de esta pgina debemos disponerlo en la marca
asp:Content, en nuestro ejemplo agregaremos una lista de enlaces a
los distintos buscadores
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 60

P.O.O. III PROGRAMACION WEB CON ASP.NET

Ejecucion de la pagina default.aspx

De igual forma creamos las otras pginas (Default2.aspx y Default3.aspx):
Default2.aspx (DISEO Y EJECUCION) de los peridicos


AUTOR: ING. PEDRO VELEZ DUQUE MSC. 61

P.O.O. III PROGRAMACION WEB CON ASP.NET

Default3.aspx (DISEO Y EJECUCION) de los blogs



AUTOR: ING. PEDRO VELEZ DUQUE MSC. 62

P.O.O. III PROGRAMACION WEB CON ASP.NET
Menus en asp.net
Esta seccion se basa en crea menus de opciones que permiten navegar
entre paginas. Para ello vamos a la seccion de navegacion y escogemos
las herramientas
y luego seleccionamos ese control en el formulario y
seguidamente seleccionamos en la propiedad Items

Y hacemos clic en el boton de puntos suspensivos para que nos
aparezca el cuadro de dialogo y para agregar opciones de menu

debemos hacer clic en el boton agregar un elementos de raiz y se
escribe el nombre del elementos y asi sucesivamente. Despues de haber
colocado los menus se cambia la propiedad de orientacion a
horizontal.

Para que se pueda acceder a otras paginas de un sitio web debemos
utilizar la propiedad navigate url de cada elemento del menu

EJERCICIO
CREA UNA APLICAICON QUE ELABORE UN MENU Y UTILICE MASTER PAGE PARA
MODIFICAR LA APLICACIN ANTERIOR.

AUTOR: ING. PEDRO VELEZ DUQUE MSC. 63

P.O.O. III PROGRAMACION WEB CON ASP.NET

A LOS MENUS SE PUEDE APLICAR UN FORMATO MAS VISTOSO ESTO SE HACE ASI:

En la siguiente venmtana se escoge un esquema y luego se hace clic en
aplicar y aceptar.

En las demas paginas se establece los links respectivos a cada
contenido.

AUTOR: ING. PEDRO VELEZ DUQUE MSC. 64

P.O.O. III PROGRAMACION WEB CON ASP.NET





















AUTOR: ING. PEDRO VELEZ DUQUE MSC. 65

P.O.O. III PROGRAMACION WEB CON ASP.NET
ASP.NET CON BASE DE DATOS EN SQL SERVER 2008
La base de datos se llamara erp y su tabla sera usuarios
Utilizamos el script siguiente:
Create database erp
Create database erp
Use erp
CREATE TABLE [dbo].[usuarios](
[nombre] [varchar](20) NOT NULL primary key,
[clave] [varchar](30) NULL,
[email] [varchar](30) NULL,
)
Posteriormente se debe crear el sitio web que se llama WEBSITE8 Y
luego crear 5 webform,seguidamente modificar el archivo webconfig con
lo siguiente:
<connectionStrings>
<add name="ERP" connectionString="data source=(local);initial
catalog=ERP;integrated security=SSPI;"></add>
</connectionStrings>
A continuacion se procede crear la pagina que tendra el siguiente
diseo:

En la pantalla utilizamos el control hiperlink en donde ponemos los
nombres y en la propiedad NavigateUrl buscar las paginas siguientes.



AUTOR: ING. PEDRO VELEZ DUQUE MSC. 66

P.O.O. III PROGRAMACION WEB CON ASP.NET
ALTAS DE USUARIOS
En el siguiente formulario se utiliza los controles web bsicos y en
la cual se mostrara un mensaje SE REGISTRO EL USUARIO

Continuando con la codificacin del botn ALTA tenemos lo siguiente:
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
Try
Dim S As String
S =
ConfigurationManager.ConnectionStrings("ERP").ConnectionString
Dim CN As New SqlConnection(S)
CN.Open()
Dim COM As New SqlCommand("INSERT INTO
USUARIOS(NOMBRE,CLAVE,EMAIL)VALUES('" & TextBox1.Text & "','" &
TextBox2.Text & "','" & TextBox3.Text & "')", CN)
COM.ExecuteNonQuery()
Label1.Text = "SE REGISTRO EL USUARIO"
CN.Close()
Catch ex As Exception
Label1.Text = ex.Message
End Try
End Sub



AUTOR: ING. PEDRO VELEZ DUQUE MSC. 67

P.O.O. III PROGRAMACION WEB CON ASP.NET
CONSULTA DE USUARIOS
En este formulario se muestra el usuario ingresado al sistema,
utilizamos un textbox para escribir el nombre del usuario en un label
mostrara la clave y su mail.

AL CLICAR EL BOTON BUSCAR PROCEDEMOS A ESCRIBIR EL CODIGO
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
Try
Dim S As String
S = ConfigurationManager.ConnectionStrings("ERP").ConnectionString
Dim CN As New SqlConnection(S)
CN.Open()
Dim COM As New SqlCommand("SELECT NOMBRE,CLAVE,EMAIL FROM USUARIOS
WHERE NOMBRE='" & TextBox1.Text & "'", CN)
Dim REG As SqlDataReader = COM.ExecuteReader()
If REG.Read Then
Label1.Text = "CLAVE:" & REG("CLAVE") & "<BR>" & "MAIL;" &
REG("EMAIL")
Else
Label1.Text = "NO EXISTE UN USUARIO CON ESE NOMBRE"
End If
Catch EX As SqlException
Label1.Text = EX.Message
End Try
End Sub


AUTOR: ING. PEDRO VELEZ DUQUE MSC. 68

P.O.O. III PROGRAMACION WEB CON ASP.NET
BAJAS DE USUARIOS
En este webform se realiza consulta de un usuario y se lo elimina de
la tabla de usuarios, le indica que se ha eliminado dicho usuario en
un label.

AL CLICAR EN EL BOTON BORRAR SE ESCRIBE EL CODIGO SIGUIENTE:
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
Try
Dim S As String
S =
ConfigurationManager.ConnectionStrings("ERP").ConnectionString
Dim CN As New SqlConnection(S)
CN.Open()
Dim COM As New SqlCommand("DELETE FROM USUARIOS WHERE
NOMBRE='" & TextBox1.Text & "'", CN)
Dim CANT As Integer = COM.ExecuteNonQuery
If CANT = 1 Then
Label1.Text = "SE BORRO EL USUARIO"
Else
Label1.Text = "NO EXISTE UN USUARIO CON ESE NOMBRE"
End If
Catch EX As SqlException
Label1.Text = EX.Message
End Try
End Sub

AUTOR: ING. PEDRO VELEZ DUQUE MSC. 69

P.O.O. III PROGRAMACION WEB CON ASP.NET
MODIFICACION DE USUARIOS
En este ultimo formulario se procede primero a buscar el usuario y
luego modificar su clave y email, si no encuentra se mostrara el
mensaje en un label no existe un usuario con ese nombre

AL CLICAR EN EL BOTON BUSCAR Y LUEGO MODIFICAR RESPECTIVAMENTE:
BUSCAR
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
Try
Dim S As String
S = ConfigurationManager.ConnectionStrings("ERP").ConnectionString
Dim CN As New SqlConnection(S)
CN.Open()
Dim COM As New SqlCommand("SELECT NOMBRE,CLAVE,EMAIL FROM USUARIOS
WHERE NOMBRE='" & TextBox1.Text & "'", CN)
Dim REG As SqlDataReader = COM.ExecuteReader()
If REG.Read Then
TextBox2.Text = REG("CLAVE")
TextBox3.Text = REG("EMAIL")
Else
Label1.Text = "NO EXISTE UN USUARIO CON ESE NOMBRE"
End If
Catch EX As SqlException
Label1.Text = EX.Message
End Try
End Sub

AUTOR: ING. PEDRO VELEZ DUQUE MSC. 70

P.O.O. III PROGRAMACION WEB CON ASP.NET
MODIFICAR
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button2.Click
Try
Dim S As String
S = ConfigurationManager.ConnectionStrings("ERP").ConnectionString
Dim CN As New SqlConnection(S)
CN.Open()
Dim COM As New SqlCommand("UPDATE USUARIOS SET CLAVE='" &
TextBox2.Text & "', EMAIL='" & TextBox3.Text & "'WHERE NOMBRE='" &
TextBox1.Text & "'", CN)
Dim CANT As Integer = COM.ExecuteNonQuery
If CANT = 1 Then
Label2.Text = "DATOS MODIFICADOS"
Else
Label2.Text = "NO EXISTE UN USUARIO CON ESE NOMBRE"
End If
Catch EX As SqlException
Label2.Text = EX.Message
End Try
End Sub











AUTOR: ING. PEDRO VELEZ DUQUE MSC. 71

P.O.O. III PROGRAMACION WEB CON ASP.NET
SISTEMA BASES DE DATOS CON ASP.NET
LA SIGUIENTE APLICACIN SE BASA EN UTILIZAR UN MENU Y UN MATERPAGE Y
QUE SE CONECTE CON UNA BASE DE DATOS EN SQL SERVER 2008
CREAR LA BASE DE DATOS Y LA TABLA UTLIZANDO EL SIGUIENTE SCRIPT
CREATE DATABASE ADMINISTRACION
USE ADMINISTRACION
CREATE TABLE USUARIO(
NOMBRE VARCHAR(30),
CLAVE VARCHAR(30),
MAIL VARCHAR(30))


CREACION DE UN MENU Y UN MASTERPAGE CON EL SIGUIENTE DISEO

ABRIR EL WEB CONFIG Y ESCRIBIR EL SIGUIENTE SEGMENTO DE
CODIGO:
<connectionStrings>
<add name="ADMINISTRACION" connectionString="data
source=(local);initial catalog=ADMINISTRACION;integrated
security=SSPI;" />
providerName="System.Data.SqlClient" />
</connectionStrings>

AUTOR: ING. PEDRO VELEZ DUQUE MSC. 72

P.O.O. III PROGRAMACION WEB CON ASP.NET

ALTAS DE USUARIOS

Imports System.Data.SqlClient
Partial Class _Default
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").ConnectionSt
ring
Dim CONEXION As New SqlConnection(S)
CONEXION.Open()
Dim COMANDO As New SqlCommand("INSERT INTO
USUARIO(NOMBRE,CLAVE,MAIL)VALUES('" & TextBox1.Text & "','" &
TextBox2.Text & "','" & TextBox3.Text & "')", CONEXION)
COMANDO.ExecuteNonQuery()
Label1.Text = "SE REGISTRO EL USUARIO"
CONEXION.Close()
Catch ex As Exception
Label1.Text = ex.Message
End Try
End Sub
End Class



AUTOR: ING. PEDRO VELEZ DUQUE MSC. 73

P.O.O. III PROGRAMACION WEB CON ASP.NET


CONSULTAS DE USUARIOS


Imports System.Data.SqlClient
Partial Class Default2
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").ConnectionSt
ring
Dim CN As New SqlConnection(S)
CN.Open()
Dim COM As New SqlCommand("SELECT NOMBRE,CLAVE,MAIL FROM
USUARIO WHERE NOMBRE='" & TextBox1.Text & "'", CN)
Dim REG As SqlDataReader = COM.ExecuteReader()
If REG.Read Then
Label1.Text = "CLAVE: " & REG("CLAVE") & "<BR>" &
"MAIL; " & REG("MAIL")
Else
Label1.Text = "NO EXISTE UN USUARIO CON ESE NOMBRE"
End If
Catch EX As SqlException
Label1.Text = EX.Message
End Try

End Sub
End Class
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 74

P.O.O. III PROGRAMACION WEB CON ASP.NET


BAJAS DE USUARIO


Imports System.Data.SqlClient
Partial Class Default3
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").ConnectionSt
ring
Dim CN As New SqlConnection(S)
CN.Open()
Dim COM As New SqlCommand("DELETE FROM USUARIO WHERE
NOMBRE='" & TextBox1.Text & "'", CN)
Dim CANT As Integer = COM.ExecuteNonQuery
If CANT = 1 Then
Label1.Text = "SE BORRO EL USUARIO"
Else
Label1.Text = "NO EXISTE UN USUARIO CON ESE NOMBRE"
End If
Catch EX As SqlException
Label1.Text = EX.Message
End Try

End Sub
End Class
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 75

P.O.O. III PROGRAMACION WEB CON ASP.NET


MODIFICACION DE USUARIOS


Imports System.Data.SqlClient
Partial Class Default4
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").ConnectionSt
ring
Dim CN As New SqlConnection(S)
CN.Open()
Dim COM As New SqlCommand("SELECT NOMBRE,CLAVE,MAIL FROM
USUARIO WHERE NOMBRE='" & TextBox1.Text & "'", CN)
Dim REG As SqlDataReader = COM.ExecuteReader()
If REG.Read Then
TextBox2.Text = REG("CLAVE")
TextBox3.Text = REG("MAIL")
Else
Label1.Text = "NO EXISTE UN USUARIO CON ESE NOMBRE"
End If
Catch EX As SqlException
Label1.Text = EX.Message
End Try
End Sub
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 76

P.O.O. III PROGRAMACION WEB CON ASP.NET

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").ConnectionSt
ring
Dim CN As New SqlConnection(S)
CN.Open()
Dim COM As New SqlCommand("UPDATE USUARIO SET CLAVE='" &
TextBox2.Text & "', MAIL='" & TextBox3.Text & "'WHERE NOMBRE='" &
TextBox1.Text & "'", CN)
Dim CANT As Integer = COM.ExecuteNonQuery
If CANT = 1 Then
Label2.Text = "DATOS MODIFICADOS"
Else
Label2.Text = "NO EXISTE UN USUARIO CON ESE NOMBRE"
End If
Catch EX As SqlException
Label2.Text = EX.Message
End Try
End Sub
End Class





















AUTOR: ING. PEDRO VELEZ DUQUE MSC. 77

P.O.O. III PROGRAMACION WEB CON ASP.NET

LISTADO DE LOS REGISTROS INGRESADOS
Primero se crea una conexin con nuestra base de datos que hemos
creado desde sql server. Seleccionamos la solapa Explorador de
servidores y presionamos botn derecho sobre Conexiones a datos,
elegimos la opcin Agregar conexin, aparece un ventana de
configuracin:


Debemos seleccionar el nombre del servidor y posteriormente el nombre
de la base de datos.
Podemos presionar luego el botn Probar conexin para comprobar la
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 78

P.O.O. III PROGRAMACION WEB CON ASP.NET
correcta configuracin de la conexin.
Presionamos por ltimo el botn Aceptar, veremos luego que aparece
en la pestaa del Explorador de servidores la conexin de datos que
acabamos de crear. Podemos presionar sobre el signo ms que aparece
en nuestra conexin y ver que tenemos disponible el acceso a las
Tablas, Vistas, Procedimientos almacenados etc. definidos para la
base de datos:


Luego de crear el proyecto iremos al Explorador de servidores y
seleccionaremos la tabla USUARIO y la arrastraremos al formulario
web. Veremos que se generan dos objetos sobre la pgina:
Un objeto de la clase GridView llamado GridView1.
Un objeto de la clase SqlDataSource llamado SqlDataSource1.
Si seleccionamos el objeto SqlDataSource1 y observamos el contenido
de la propiedad SelectQuery, veremos que ya est configurado el
comando SELECT:
SELECT [NOMBRE], [CLAVE], [MAIL] FROM [USUARIO] El comando SELECT
indica rescatar todas las filas de la tabla USUARIO.
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 79

P.O.O. III PROGRAMACION WEB CON ASP.NET























AUTOR: ING. PEDRO VELEZ DUQUE MSC. 80

P.O.O. III PROGRAMACION WEB CON ASP.NET
ABM (Altas, Bajas y Modificaciones)con SqlDatasource
Trabajaremos con la misma base de datos de la clase anterior:
administracin y la tabla que creamos:
nombre varchar(30) Clave primaria
clave varchar(30)
mail varchar(30)

Crearemos un sitio web en el Visual Studio 2008 llamado
webASP_DATASORCE. El MasterPage tendr un men con los hipervnculos
a otras pginas que tendrn por objetivo efectuar una el alta de
usuarios, otra la baja, otra las modificaciones y por ltimo otra la
consulta y el listado de los registros de la tabla.


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


AUTOR: ING. PEDRO VELEZ DUQUE MSC. 81

P.O.O. III PROGRAMACION WEB CON ASP.NET
Conexin con la base de datos
Ahora veremos cmo crear una conexin con nuestra base de datos que
hemos creado desde SQL Server.
Seleccionamos la solapa Explorador de servidores y presionamos
botn derecho sobre Conexiones a datos, elegimos la opcin Agregar
conexin, aparece un ventana de configuracin:


Debemos seleccionar el nombre del servidor y posteriormente el nombre
de la base de datos.
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 82

P.O.O. III PROGRAMACION WEB CON ASP.NET
Podemos presionar luego el botn Probar conexin para comprobar la
correcta configuracin de la conexin.
Presionamos por ltimo el botn Aceptar, veremos luego que aparece
en la pestaa del Explorador de servidores la conexin de datos que
acabamos de crear. Podemos presionar sobre el signo ms que aparece
en nuestra conexin y ver que tenemos disponible el acceso a las
Tablas, Vistas, Procedimientos almacenados etc. definidos para la
base de datos:

Podemos ahora desde el explorador de servidores ver las tablas,
campos de una tabla e inclusive si presionamos el botn derecho del
mouse sobre la tabla usuarios podemos ver los datos de la misma.
Ahora podemos empezar con el alta de usuarios.

Alta de usuario
Del cuadro de herramientas seleccionamos un control de la clase
SqlDataSource (tener en cuenta que est en el grupo Datos y no en
el grupo Estndar)
Ahora podemos ver que nuestro formulario tiene un componente llamado
SqlDataSource1 que es de la clase SqlDataSource. Este componente
visual no se ver en tiempo de ejecucin como veremos ms adelante.
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 83

P.O.O. III PROGRAMACION WEB CON ASP.NET

Seleccionamos el control SqlDataSource1 del formulario y en la
ventana de Propiedades inicializamos la propiedad ConnectionString
con el valor que aparece al presionar la
pestaa de la derecha (bsicamente es la
cadena de conexin que creamos
anteriormente)
Ahora nos queda configura la propiedad InsertQuery con el comando SQL
que nos permite insertar un registro en una tabla.
La propiedad InsertQuery nos abre una ventana de dilogo donde
debemos configurar el comando INSERT:


AUTOR: ING. PEDRO VELEZ DUQUE MSC. 84

P.O.O. III PROGRAMACION WEB CON ASP.NET


Este dilogo es muy importante ingresar correctamente el comando SQL
parametrizando los valores que sern reemplazados en tiempo de
ejecucin con los datos que cargue el operador.
Los parmetros se indican con un nombre antecedindole el carcter @.
Luego de crear completamente el comando Insert procedemos a presionar
el botn Actualizar parmetros.
Si queremos comprobar si nuestro comando SQL est correcto
presionamos el botn Generador de consultas y desde este nuevo
dilogo presionamos el botn Ejecutar consulta:


AUTOR: ING. PEDRO VELEZ DUQUE MSC. 85

P.O.O. III PROGRAMACION WEB CON ASP.NET
(Tambin desde este dilogo podemos codificar la consulta, probarla y
finalmente confirmarla). Lo que no hay que olvidarse nunca es que
cada vez que agregamos o borramos un parmetro de nuestro comando SQL
es presionar el botn Actualizar parmetros. Ahora codificamos el
evento clic del botn de alta:

Imports System.Data.SqlClient
Partial Class _Default
Inherits System.Web.UI.Page

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
Try
Me.SqlDataSource1.InsertParameters("nombre").DefaultValue
= Me.TextBox1.Text
Me.SqlDataSource1.InsertParameters("clave").DefaultValue
= Me.TextBox2.Text
Me.SqlDataSource1.InsertParameters("mail").DefaultValue =
Me.TextBox3.Text
Me.SqlDataSource1.Insert()
Me.Label1.Text = "Se efectu la carga."
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 botn inicializamos los tres parmetros del comando
SQL que hemos configurado en el SqlDataSource. Para acceder a dichos
parmetros disponemos de la propiedad InsertParameters que le
indicamos como subndice el nombre del parmetro.
Luego de inicializar los tres parmetros procedemos a llamar al
mtodo Insert de la clase SqlDataSource.
Todo esto lo hacemos capturando la excepcin SQLException.



AUTOR: ING. PEDRO VELEZ DUQUE MSC. 86

P.O.O. III PROGRAMACION WEB CON ASP.NET
Consultas de usuario
Seleccionamos del Explorador de soluciones la pgina
consultausuario.aspx y procedemos a elaborar la siguiente interface
visual (disponemos un TextBox, un Button, una Label, un HyperLink y
un SqlDataSoruce:

Configuramos el SqlDataSource1, luego de seleccionarlo con el mouse
modificamos la propiedad ConnectionString (con la conexin creada
anteriormente) y en el dilogo que abre la propiedad SelectQuery
procedemos a codificar el comando select:
select clave,mail from usuario where nombre=@nombre

Es decir recuperamos la clave y mail de un determinado usuario
(recordar de presionar el botn Actualizar parmetros) y ejecutamos
la consulta desde el generador de consulta.
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 87

P.O.O. III PROGRAMACION WEB CON ASP.NET
El cdigo del evento clic es:
Imports System.Data.SqlClient
Partial Class Default2
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click

Try
Me.SqlDataSource1.SelectParameters("nombre").DefaultValue
= Me.TextBox1.Text
Me.SqlDataSource1.DataSourceMode =
SqlDataSourceMode.DataReader
Dim datos As SqlDataReader
datos =
Me.SqlDataSource1.Select(DataSourceSelectArguments.Empty)
If datos.Read Then
Me.Label1.Text = "Clave:" & datos("clave") & "<br />"
& "Mail:" & datos("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 mediante un objeto de la clase
SqlDataReader debemos configurar el SqlDataSource indicando a la
propiedad DataSourceMode el siguiente valor:
Me.SqlDataSource1.DataSourceMode = SqlDataSourceMode.DataReader
Ahora cuando llamemos al mtodo select del SqlDataSource lo hacemos
con la siguiente sintaxis:
Dim datos As SqlDataReader
datos = Me.SqlDataSource1.Select(DataSourceSelectArguments.Empty)
Luego recorremos el SqlDataReader (como este caso puede retornar cero
o una fila lo hacemos mediante un if:
If datos.Read Then
Si el mtodo Read retorna true luego podemos acceder a la fila
recuperada con el select.



AUTOR: ING. PEDRO VELEZ DUQUE MSC. 88

P.O.O. III PROGRAMACION WEB CON ASP.NET
Bajas de Usuario
Seleccionamos del Explorador de soluciones la pgina bajausuario.aspx
y procedemos a elaborar la siguiente interface visual:


Inicializamos la propiedad ConnectionString del SqlDataSource1 con la
conexin que habamos creado e inicializamos la propiedad
DeleteQuery:


AUTOR: ING. PEDRO VELEZ DUQUE MSC. 89

P.O.O. III PROGRAMACION WEB CON ASP.NET
Luego el cdigo a ejecutar cuando se presiona el botn Borrar de la
pgina es:

Imports System.Data.SqlClient
Partial Class Default3
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
Try
Me.SqlDataSource1.DeleteParameters("nombre").DefaultValue
= Me.TextBox1.Text
Dim cant As Integer
cant = Me.SqlDataSource1.Delete
If cant = 1 Then
Me.Label1.Text = "Se borr el usuario"
Else
Me.Label1.Text = "No existe dicho nombre"
End If
Catch ex As SqlException
Me.Label1.Text = ex.Message
End Try
End Sub
End Class

Procedemos a inicializar el parmetro y luego llamamos al mtodo
Delete del SqlDataSource. El mtodo Delete retorna un entero y
representa la cantidad de filas borradas de la tabla.















AUTOR: ING. PEDRO VELEZ DUQUE MSC. 90

P.O.O. III PROGRAMACION WEB CON ASP.NET
Modificaciones de Usuario
Por ltimo implementaremos la modificacin de datos. Seleccionamos
del Explorador de soluciones la pgina modificacionusuario.aspx y
procedemos a elaborar la siguiente interface visual:


Para efectuar la modificacin de datos de un usuario procederemos
primero a la bsqueda de los datos actuales. Esto hace que
necesitemos un control de la clase SqlDataSource.
El SqlDataSource1 nos permite consultar los datos de un usuario por
su nombre y mostrar el resultado en dos controles de tipo TextBox. La
propiedad SelectQuery:
select clave,mail from usuarios where nombre=@nombre

Luego tambin configuramos la propiedad UpdateQuery:

UPDATE usuarios SET clave = @clave, mail = @mail WHERE (nombre =
@nombre)
Luego el cdigo para los eventos clic de los dos botones es:

Imports System.Data.SqlClient
Partial Class Default4
Inherits System.Web.UI.Page
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 91

P.O.O. III PROGRAMACION WEB CON ASP.NET

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
Try
Me.SqlDataSource1.SelectParameters("nombre").DefaultValue
= Me.TextBox1.Text
Me.SqlDataSource1.DataSourceMode =
SqlDataSourceMode.DataReader
Dim datos As SqlDataReader
datos =
Me.SqlDataSource1.Select(DataSourceSelectArguments.Empty)
If datos.Read Then
Me.TextBox2.Text = datos("clave")
Me.TextBox3.Text = datos("mail")
Else
Me.Label1.Text = "No existe dicho usuario"
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
Me.SqlDataSource1.UpdateParameters("clave").DefaultValue
= Me.TextBox2.Text
Me.SqlDataSource1.UpdateParameters("mail").DefaultValue =
Me.TextBox3.Text
Me.SqlDataSource1.UpdateParameters("nombre").DefaultValue
= Me.TextBox1.Text
Dim cant As Integer
cant = Me.SqlDataSource1.Update()
If cant = 1 Then
Me.Label2.Text = "Se modificaron los datos"
Else
Me.Label2.Text = "No existe dicho usuario"
End If
Catch ex As SqlException
Me.Label2.Text = ex.Message
End Try
End Sub
End Class


AUTOR: ING. PEDRO VELEZ DUQUE MSC. 92

P.O.O. III PROGRAMACION WEB CON ASP.NET
Listado de usuarios
Se abre el webform de Listado.aspx y luego se arrastran desde el
explorador de servidores, la tabla de usuario hacia el formulario que
dando de la siguiente forma.






















AUTOR: ING. PEDRO VELEZ DUQUE MSC. 93

P.O.O. III PROGRAMACION WEB CON ASP.NET
ABM (Altas, Bajas y Modificaciones)con SqlDatasource de
varias tablas
Continuamos con la base de datos que creamos en la clase anterior en
SQL Server llamada: administracin y dentro de la misma crearemos
ahora dos nuevas tablas:
Tabla: articulos
codigo varchar(10).
descripcion varchar(50)
precio varchar(5)
codigorubro varchar(5)

Tabla: rubros
Codigo varchar(5)
descripcin varchar(50)
Crearemos un sitio web en el Visual Studio 2008 llamado WEB_ASPVT.
La primer pgina solo tendr un masterpage con un men que tendrn
por objetivo efectuar los vnculos de los webforms: una el alta de
articulos, otra la baja, otra las modificaciones y por ltimo otra la
consulta.

Desde la herramienta que utilizamos para crear la base de datos y las
tablas procedemos a cargar algunos rubros en forma manual (esto nos
permitir entrar de lleno en los algoritmos que requieren trabajar
con las dos tablas).

AUTOR: ING. PEDRO VELEZ DUQUE MSC. 94

P.O.O. III PROGRAMACION WEB CON ASP.NET
Como segundo paso creemos las cuatro pginas, 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 pginas a crear sern:

default.aspx
default2.aspx
default3.aspx
default4.aspx

Altas
Activemos desde el Visual Studio 2008 la pestaa default1.aspx para
elaborar la interface visual que nos permita efectuar la carga de
datos de artculos:

Como podemos ver disponemos dos controles de tipo TextBox, un control
de tipo DropDownList el cual nos permitir seleccionar el rubro que
pertenece el artculo que estamos cargando.
Disponemos un objeto de la clase Button y una Label donde mostraremos
un mensaje si el alta se efectu correctamente.

Conexin con la base de datos.
Utilizaremos la misma conexin que creamos en la clase anterior. Si
desde el Visual Estudio activamos la pestaa Explorador de servidores
veremos que est presente la conexin con la base de datos
administracin.
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 95

P.O.O. III PROGRAMACION WEB CON ASP.NET
Ahora podemos empezar con el alta de artculos.
Del cuadro de herramientas seleccionamos un control de la clase
SqlDataSource (tener en cuenta que est en el grupo Datos y no en
el grupo Estndar)

Ahora podemos ver que nuestro formulario tiene un componente llamado
SqlDataSource1 que es de la clase SqlDataSource.
Este primer SqlDataSource nos permitir rescatar los datos de los
rubros (codigo y descripcin) y poblar el control DropDownList.

Seleccionamos el control SqlDataSource2 del formulario y en la
ventana de Propiedades inicializamos la propiedad ConnectionString
con el valor que aparece al presionar la pestaa de la derecha
(bsicamente es la cadena de conexin que creamos anteriormente)
Ahora nos queda configura la propiedad SelectQuery con el comando SQL
que nos permite recuperar todas las filas de la tabla rubros.

La propiedad SelectQuery nos abre una ventana de dilogo donde
debemos configurar el comando SELECT:

select codigo,descripcion from rubro



Una vez hecho esta configuracin procedemos a codificar el enlace
entre el DropDonwList1 y el SqlDataSource2 en el evento Load de la
pgina:

Partial Class altaarticulos
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
If Me.IsPostBack = False Then
Me.DropDownList1.DataSource = Me.SqlDataSource1
Me.DropDownList1.DataTextField = "descripcion"
Me.DropDownList1.DataValueField = "codigo"
Me.DropDownList1.DataBind()
End If
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 96

P.O.O. III PROGRAMACION WEB CON ASP.NET
End Sub
La propiedad IsPostBack de la pgina almacena false la primera vez
que solicitamos la pgina desde el navegador, de ah en ms cada vez
que presionamos un botn de la pgina (Alta por ejemplo) la propiedad
IsPostBack almacena true.

Con esta condicin logramos que la carga del control DropDownList1 se
ejecute solo la primera vez que solicitamos la pgina.
Debemos inicializar tres propiedades del control DropDownList para
cargar los datos de los rubros. La propiedad DataSource la
inicializamos con la referencia a nuestro objeto SqlDataSource2. Las
propiedades DataTextField y DataValueField deben inicializarse con
los nombres de las columnas de la tabla rubros que deben visualizarse
y seleccionarse en el control. Por ltimo llamamos al mtodo DataBind
para que se genere el HTML del control.

Ahora procedemos a agregar un segundo objeto de la clase
SqlDataSource que nos permitir actualizar la tabla artculos.

Seleccionamos el control SqlDataSource1 y en la ventana de
Propiedades inicializamos la propiedad ConnectionString con el
valor que aparece al presionar la pestaa de la derecha.

Ahora nos queda configurar la propiedad InsertQuery con el comando
SQL que nos permite insertar un registro en una tabla.

La propiedad InsertQuery nos abre una ventana de dilogo donde
debemos configurar el comando INSERT:

INSERT INTO articulos(codigo, descripcion, precio, codigorubro)
VALUES (@codigo, @descripcion, @precio, @codigorubro)

Decamos en la clase anterior que este dilogo es muy importante
ingresar correctamente el comando SQL parametrizando los valores que
sern remplazados en tiempo de ejecucin con los datos que cargue el
operador.

Los parmetros se indican con un nombre antecedindole el carcter @.
Luego de crear completamente el comando Insert procedemos a presionar
el botn Actualizar parmetros.

AUTOR: ING. PEDRO VELEZ DUQUE MSC. 97

P.O.O. III PROGRAMACION WEB CON ASP.NET

Si queremos comprobar si nuestro comando SQL est correcto
presionamos el botn Generador de consultas y desde este nuevo
dilogo presionamos el botn Ejecutar consulta:
Lo que no hay que olvidarse nunca es que cada vez que agregamos o
borramos un parmetro de nuestro comando SQL es presionar el botn
Actualizar parmetros.
Ahora codificamos el evento clic del botn de alta:

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
Try
Me.SqlDataSource2.InsertParameters("codigo").DefaultValue
= Me.TextBox1.Text

Me.SqlDataSource2.InsertParameters("descripcion").DefaultValue =
Me.TextBox2.Text
Me.SqlDataSource2.InsertParameters("precio").DefaultValue
= Me.TextBox3.Text

Me.SqlDataSource2.InsertParameters("codigorubro").DefaultValue =
Me.DropDownList1.SelectedValue
Me.SqlDataSource2.Insert()
Me.Label1.Text = "Se efectu la carga"
Catch ex As Exception
Me.Label1.Text = ex.Message
End Try
End Sub

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 botn inicializamos los tres parmetros del comando
SQL que hemos configurado en el SqlDataSource. Para acceder a dichos
parmetros disponemos de la propiedad InsertParameters que le
indicamos como subndice el nombre del parmetro.
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 98

P.O.O. III PROGRAMACION WEB CON ASP.NET
Lo que difiere de la clase anterior es la inicializacin del
parmetro codigorubro con el valor que rescatamos de la propiedad
SelectedValue del control DropDownList1.

Luego de inicializar los tres parmetros procedemos a llamar al
mtodo Insert de la clase SqlDataSource.
Todo esto lo hacemos capturando la excepcin SQLException.



Consultas
Seleccionamos del Explorador de soluciones la pgina
consultaarticulos.aspx y procedemos a elaborar la siguiente interface
visual (disponemos un TextBox, un Button, una Label, un HyperLink y
un SqlDataSource):
Configuramos el SqlDataSource1, luego de seleccionarlo con el mouse
modificamos la propiedad ConnectionString (con la conexin creada
anteriormente) y en el dilogo que abre la propiedad SelectQuery
procedemos a codificar el comando select:

select ar.descripcion as descriarticulo,
precio,
ru.descripcion as descrirubro
from articulos as ar
join rubros as ru on ru.codigo=ar.codigorubro
where ar.codigo=@codigo

AUTOR: ING. PEDRO VELEZ DUQUE MSC. 99

P.O.O. III PROGRAMACION WEB CON ASP.NET


Es decir recuperamos la descripcin del artculo, su precio y la
descripcin del rubro de la otra tabla (recordar de presionar el
botn Actualizar parmetros)
El cdigo del evento clic es:

Imports System.Data.SqlClient
Partial Class Default2
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
Try
Me.SqlDataSource1.SelectParameters("codigo").DefaultValue
= Me.TextBox1.Text
Me.SqlDataSource1.DataSourceMode =
SqlDataSourceMode.DataReader
Dim datos As SqlDataReader
datos =
SqlDataSource1.Select(DataSourceSelectArguments.Empty)
If datos.Read Then
Me.Label1.Text = "Descripcion:" & _
datos("descriarticulo") & "<br />" & _
"Precio:" & datos("precio") & "<br />" & _
"Rubro:" & datos("descrirubro")
Else
Me.Label1.Text = "No existe un artculo con dicho
cdigo"
End If
Catch ex As Exception
Me.Label1.Text = ex.Message
End Try
End Sub
End Class
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 100

P.O.O. III PROGRAMACION WEB CON ASP.NET

Para poder recuperar los datos mediante un objeto de la clase
SqlDataReader debemos configurar el SqlDataSource indicando a la
propiedad DataSourceMode el siguiente valor:
Me.SqlDataSource1.DataSourceMode = SqlDataSourceMode.DataReader

Ahora cuando llamemos al mtodo select del SqlDataSource lo hacemos
con la siguiente sintaxis:
Dim datos As SqlDataReader
datos = Me.SqlDataSource1.Select(DataSourceSelectArguments.Empty)

Luego recorremos el SqlDataReader (como este caso puede retornar cero
o una fila lo hacemos mediante un if):
If datos.Read Then
Si el mtodo Read retorna true luego podemos acceder a la fila
recuperada con el select.


Bajas
Seleccionamos del Explorador de soluciones la pgina
bajaarticulos.aspx y procedemos a elaborar la siguiente interface
visual:
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 101

P.O.O. III PROGRAMACION WEB CON ASP.NET


Inicializamos la propiedad ConnectionString del SqlDataSource1 con la
conexin que habamos creado e inicializamos la propiedad
DeleteQuery.


Luego el cdigo a ejecutar cuando se presiona el botn Borrar de la
pgina es:

Imports System.Data.SqlClient
Partial Class Default3
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
Try
Me.SqlDataSource1.DeleteParameters("codigo").DefaultValue
= Me.TextBox1.Text
Dim cant As Integer
cant = Me.SqlDataSource1.Delete
If cant = 1 Then
Me.Label1.Text = "Se borr el artculo"
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 102

P.O.O. III PROGRAMACION WEB CON ASP.NET
Else
Me.Label1.Text = "No existe el codigo"
End If
Catch ex As Exception
Me.Label1.Text = ex.Message
End Try
End Sub
End Class

Procedemos a inicializar el parmetro y luego llamamos al mtodo
Delete del SqlDataSource. El mtodo Delete retorna un entero y
representa la cantidad de filas borradas de la tabla.
















AUTOR: ING. PEDRO VELEZ DUQUE MSC. 103

P.O.O. III PROGRAMACION WEB CON ASP.NET
Modificaciones.
Por ltimo implementaremos la modificacin de datos. Seleccionamos
del Explorador de soluciones la pgina modificacionartculos.aspx y
procedemos a elaborar la siguiente interface visual:

Para efectuar la modificacin de datos de un artculo procederemos
primero a la bsqueda de los datos actuales. Esto hace que
necesitemos un primer control de tipo SqlDataSource (que llamamos
SqlDataSource1)
El primer SqlDataSource nos permite consultar los datos de un
artculo por su cdigo y mostrar el resultado en dos controles de
tipo TextBox y en un control de tipo DropDownList el rubro que
pertenece.
Para inicializar el DropDownList debemos crear un segundo
SqlDataSource (SqlDataSource2)
El SqlDataSource1:
- ConnectionString.
- SelectQuery
select * from articulos
where codigo=@codigo:
- UpdateQuery
update articulos set descripcion=@descripcion,
precio=@precio, codigorubro=@codigorubro
where codigo=@codigo
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 104

P.O.O. III PROGRAMACION WEB CON ASP.NET




El SqlDataSource2 debemos configurar las propiedades:
- ConnectionString.
- SelectQuery
select * from rubro


Luego el cdigo para los eventos clic de los dos botones es:
BOTON BUSCAR
Imports System.Data.SqlClient
Partial Class Default4
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
Try
Me.SqlDataSource1.SelectParameters("codigo").DefaultValue
= Me.TextBox1.Text
Me.SqlDataSource1.DataSourceMode =
SqlDataSourceMode.DataReader
Dim datos As SqlDataReader
datos =
SqlDataSource1.Select(DataSourceSelectArguments.Empty)
If datos.Read Then
Me.TextBox2.Text = datos("descripcion")
Me.TextBox3.Text = datos("precio")
Me.DropDownList1.DataSource = Me.SqlDataSource2
Me.DropDownList1.DataTextField = "descripcion"
Me.DropDownList1.DataValueField = "codigo"
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 105

P.O.O. III PROGRAMACION WEB CON ASP.NET
Me.DropDownList1.SelectedValue = datos("codigorubro")
Me.DropDownList1.DataBind()
Else
Me.Label1.Text = "No existe un artculo con dicho
cdigo"
End If
Catch ex As Exception
Me.Label1.Text = ex.Message
End Try
End Sub
BOTON MODIFICAR
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button2.Click
Try

Me.SqlDataSource1.UpdateParameters("descripcion").DefaultValue =
Me.TextBox2.Text
Me.SqlDataSource1.UpdateParameters("precio").DefaultValue
= Me.TextBox3.Text

Me.SqlDataSource1.UpdateParameters("codigorubro").DefaultValue =
Me.DropDownList1.SelectedValue
Me.SqlDataSource1.UpdateParameters("codigo").DefaultValue
= Me.TextBox1.Text
Dim cant As Integer
cant = SqlDataSource1.Update
If cant >= 1 Then
Me.Label2.Text = "Datos modificados"
Else
Me.Label2.Text = "No existe un artculo con dicho
codigo"
End If
SqlDataSource1.Update()
Catch ex As Exception
Me.Label2.Text = ex.Message
End Try
End Sub
BOTON LIMPIAR
Protected Sub Button3_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button3.Click
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
End Sub

AUTOR: ING. PEDRO VELEZ DUQUE MSC. 106

P.O.O. III PROGRAMACION WEB CON ASP.NET














AUTOR: ING. PEDRO VELEZ DUQUE MSC. 107

P.O.O. III PROGRAMACION WEB CON ASP.NET
Control GridView
Conceptos.
El control GridView del ASP.Net permite visualizar datos en una tabla
en pantalla, editar, modificar y borrar registros del mismo.
El GridView es un control extremadamente flexible para mostrar tablas
multicolumna.
Cada registro de una consulta de un select configurado en un
SqlDataSource genera una fila en la grilla. Cada campo en el registro
representa una columna en la grilla.
El GridView es el control ms poderoso que provee el ASP.Net. Veremos
que este control trae funcionalidades ya implementadas para
paginacin, ordenamiento y edicin de sus datos.
Datos de una tabla
Crearemos un proyecto para probar el control GridView y las
diferentes opciones que nos brinda.
Luego de crear el proyecto iremos al Explorador de servidores y
seleccionaremos la tabla rubros y la arrastraremos al formulario
web. Veremos que se generan dos objetos sobre la pgina:
Un objeto de la clase GridView llamado GridView1.
Un objeto de la clase SqlDataSource llamado SqlDataSource1.


AUTOR: ING. PEDRO VELEZ DUQUE MSC. 108

P.O.O. III PROGRAMACION WEB CON ASP.NET
Si seleccionamos el objeto SqlDataSource1 y observamos el contenido
de la propiedad SelectQuery, veremos que ya est configurado el
comando SELECT:
SELECT [codigo], [descripcion] FROM [rubros]
El comando SELECT indica rescatar todas las filas de la tabla rubros.

Podemos ver que debemos configurar las propiedades InsertQuery,
DeleteQuery y UpdateQuery con los valores:
INSERT INTO [rubro] ([descripcion]) VALUES (@descripcion)



AUTOR: ING. PEDRO VELEZ DUQUE MSC. 109

P.O.O. III PROGRAMACION WEB CON ASP.NET
DELETE FROM [rubro] WHERE [codigo] = @codigo

UPDATE [rubros] SET [descripcion] = @descripcion WHERE [codigo] =
@codigo

No debemos de comprobar las sentencias sql haciendo clic en
actualizar los parmetros y en generador de consulta para que se
ejecute la consulta
Como podemos ver hasta este momento la herramienta Visual Studio .Net
nos ha configurado en forma automtica el control SqlDataSource1,
solo nos queda configurar el control GridView1.
Seleccionamos el control GridView y presionamos el botn presente en
la parte superior derecha, el mismo nos muestra una serie de las
funcionalidades bsicas del control:
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 110

P.O.O. III PROGRAMACION WEB CON ASP.NET

Como podemos ver ya est configurado el origen de datos con el objeto
SqlDataSource1. Habilitemos la paginacin, ordenamiento, edicin,
seleccin y eliminacin. Ejecutemos el proyecto y comprobaremos que
tenemos en la pgina los datos de la tabla rubros con la capacidad
de modificar y borrar registros. Adems est activa la paginacin y
ordenamiento por cualquiera de las dos columnas de la tabla.

AUTOR: ING. PEDRO VELEZ DUQUE MSC. 111

P.O.O. III PROGRAMACION WEB CON ASP.NET
Sin escribir una sola lnea de cdigo tenemos el mantenimiento de la
tabla rubros (con la excepcin del alta)
Veamos otras caractersticas que podemos configurar en forma visual
del control GridView. Desde el botn > que se encuentra en la parte
superior derecha del control GridView1 podemos seleccionar la opcin
Formato Automtico... para definir la presentacin de la tabla con
plantillas predefinidas de color y fuente.

Luego de seleccionar el esquema para el GridView, presionamos aceptar
y tenemos ya definido el nuevo formato de la grilla.
Desde la ventana de propiedades configuraremos las propiedades:
Caption: Es un ttulo que aparece en la parte superior del GridView.
PageSize: Cantidad de registros a mostrar por pgina.
Luego de esto ejecutamos nuevamente y tenemos como resultado:

AUTOR: ING. PEDRO VELEZ DUQUE MSC. 112

P.O.O. III PROGRAMACION WEB CON ASP.NET
Datos de varias tablas
Continuamos con las tablas:
Tabla: articulos
codigo int Clave primaria e identidad.
descripcion varchar(50)
precio float
codigorubro int

Tabla: rubros
codigo int Clave primaria e identidad
descripcion varchar(50

Generamos un nuevo webform y seleccionamos desde el Explorador de
servidores la tabla articulos y la disponemos dentro del webform. El
entorno del Visual Studio .Net nos genera un objeto de la clase
GridView y otro de la clase SqlDataSource.
El objetivo final es mostrar el cdigo del artculo, su descripcin,
su precio y finalmente la descripcin del rubro (no el cdigo de
rubro)
1 - Primero seleccionamos el control SqlDataSource1 y configuramos la
propiedad SelectQuery con el comando Select que rescata los datos
haciendo el emparejamiento por la columna codigorubro de la tabla
articulos y codigo de la tabla rubros:

SELECT ar.codigo,
ar.descripcion as descriarticulo,
precio,
ru.descripcion as descrirubro
from articulos as ar
join rubro as ru on ru.codigo=ar.codigorubro



2 - Luego de configurar la propiedad SelectQuery debemos actualizar
el esquema del SqlDataSource1, esto lo hacemos seleccionando el
objeto sobre el formulario y seleccionamos la opcin Actualizar
esquema. Con esto logramos que se refresque las columnas a mostrar
en el GridView1.
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 113

P.O.O. III PROGRAMACION WEB CON ASP.NET
Si ejecutamos podemos ver que ya tenemos la tabla que rescata todos
los artculos y asociado a cada artculo la descripcin del rubro al
que pertenece:

Ahora configuraremos algunas propiedades para dar un formato y
presentacin ms adecuada de los datos:
A Ya vimos que seleccionando el GridView1 y mediante la opcin
Formato automtico... podemos definir el estilo de presentacin de
la grilla.
B Ahora entramos a la opcin Editar columnas... y seleccionamos
el campo a configurar dndole doble clic:

AUTOR: ING. PEDRO VELEZ DUQUE MSC. 114

P.O.O. III PROGRAMACION WEB CON ASP.NET
Cambiemos los ttulos de las columnas de cada campo (por ejemplo en
el campo descriarticulo mostraremos el ttulo Descripcin del Art.
Modificando la propiedad HeaderText.
De forma similar cambiar los otros ttulos de las columnas de la
grilla:

C La propiedad Visible de cada columna nos permite configurar si la
columna se muestra o no.
D La propiedad DataFormatString nos permite configurar la
apariencia de nmeros y fechas. Por ejemplo si queremos que el precio
aparezca con el smbolo de moneda debemos configurar la propiedad
DataFormatString con el valor:
{0:C}

Formato de filas individuales de acuerdo a ciertas
condiciones.
Cuando se grafica la tabla podemos capturar el evento RowDataBound y
configurar como graficar dicha fila de la tabla.
A modo de ejemplo mostraremos de color amarillo las filas de los
artculos con precio superior a 5. Para esto codificamos el evento
RowDataBound del GridView1:

Protected Sub GridView1_RowDataBound(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _
Handles GridView1.RowDataBound

If e.Row.RowType = DataControlRowType.DataRow Then
Dim precio As Single
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 115

P.O.O. III PROGRAMACION WEB CON ASP.NET
precio = DataBinder.Eval(e.Row.DataItem, "precio")
If precio > 5 Then
e.Row.ForeColor = System.Drawing.Color.Red
e.Row.BackColor = System.Drawing.Color.Yellow
e.Row.Font.Bold = True
End If
End If

End Sub
Con el if verificamos si el evento se dispar para una fila de datos
de la grilla (ya que este mtodo se dispara cuando dibuja la cabecera
(DataControlRowType.Header), el pi de grilla
(DataControlRowType.Footer) etc.
Luego rescatamos el valor del campo precio y verificamos con un nuevo
if si el precio supera 5, en caso afirmativo modificamos el color de
fondo (BackColor) y de frente de la fila.



Seleccin de una fila del GridView y posterior extraccin
de sus datos.

En muchas situaciones es necesario que el usuario seleccione una fila
de la grilla para reflejar dicho dato en otra parte de la pgina o
hacer otra consulta.
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 116

P.O.O. III PROGRAMACION WEB CON ASP.NET
Para poder implementar esta caracterstica del primer GridView en
default1.aspx, llevaremos a cabo los siguientes pasos:
1 Cambiaremos el valor de la propiedad SelectedRowStyle.BackColor
por amarillo (es decir que cuando seleccionemos la fila el color de
fondo de la misma se activar con este valor)
2 En el men de opciones que se despliega en la parte derecha del
GridView1 activaremos el CheckBox Habilitar seleccin
3 Dispondremos una Label en el webform para mostrar el valor
seleccionado de la grilla (solo a modo de ejemplo)
4 Para el evento SelectedIndexChanged del GridView1 codificaremos
el siguiente cdigo:

Protected Sub GridView1_SelectedIndexChanged(ByVal sender As Object,
ByVal e As System.EventArgs) Handles GridView1.SelectedIndexChanged
Me.Label1.Text =
Me.GridView1.Rows(Me.GridView1.SelectedIndex).Cells(1).Text
End Sub

El objeto Rows del GridView almacena una coleccin de filas, mediante
el valor devuelto por la propiedad SelectedIndex de la grilla podemos
acceder a la celda que almacena el cdigo del artculo.






AUTOR: ING. PEDRO VELEZ DUQUE MSC. 117

P.O.O. III PROGRAMACION WEB CON ASP.NET

EJERCICIO DE PROGRAMACIN
Este sistema va a contener una base de datos llamada contacto y una
tabla llanada contacto que tiene los siguientes campos:

Elabora un webform que tenga el siguiente diseo

El diseo tiene los siguientes cdigos:
BOTON INSERTAR
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim cnnBaseDat As SqlClient.SqlConnection
Dim comBaseDat As SqlClient.SqlCommand
cnnBaseDat = New SqlClient.SqlConnection
cnnBaseDat.ConnectionString = "initial
catalog=contacto;Integrated Security=True"
cnnBaseDat.Open()
Try
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 118

P.O.O. III PROGRAMACION WEB CON ASP.NET
comBaseDat = New SqlClient.SqlCommand("insert into
contacto values('" + Me.TextBox1.Text + "','" + Me.TextBox2.Text +
"','" + Me.TextBox3.Text + "','" + Me.TextBox4.Text + "','" +
Me.TextBox5.Text + "')", cnnBaseDat)
comBaseDat.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
BOTN MODIFICAR
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button2.Click
Dim cnnBaseDat As SqlClient.SqlConnection
Dim comBaseDat As SqlClient.SqlCommand
cnnBaseDat = New SqlClient.SqlConnection
cnnBaseDat.ConnectionString = "initial
catalog=contacto;Integrated Security=True"
cnnBaseDat.Open()
Try
comBaseDat = New SqlClient.SqlCommand("update contacto
set Nombre='" + Me.TextBox2.Text + "',Apellido='" + Me.TextBox3.Text
+ "',Direccion='" + Me.TextBox4.Text + "',Email='" + Me.TextBox5.Text
+ "' where dni='" + Me.TextBox1.Text + "' ", cnnBaseDat)
comBaseDat.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub

BOTON ELIMINAR

Protected Sub Button3_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button3.Click
Dim cnnBaseDat As SqlClient.SqlConnection
Dim comBaseDat As SqlClient.SqlCommand
cnnBaseDat = New SqlClient.SqlConnection
cnnBaseDat.ConnectionString = "initial
catalog=contacto;Integrated Security=True"
cnnBaseDat.Open()
Try
comBaseDat = New SqlClient.SqlCommand("delete contacto
where dni='" + Me.TextBox1.Text + "'", cnnBaseDat)
comBaseDat.ExecuteNonQuery()
Catch ex As Exception
AUTOR: ING. PEDRO VELEZ DUQUE MSC. 119

P.O.O. III PROGRAMACION WEB CON ASP.NET
MsgBox(ex.Message)
End Try
End Sub

BOTON ANTERIOR

Protected Sub Button5_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button5.Click
Dim cnnBaseDat As SqlClient.SqlConnection
Dim comBaseDat As SqlClient.SqlCommand
Dim adpBaseDat As SqlClient.SqlDataAdapter
Dim dstTablas As DataSet
cnnBaseDat = New SqlClient.SqlConnection
cnnBaseDat.ConnectionString = "initial
catalog=contacto;Integrated Security=True"
cnnBaseDat.Open()
Try
comBaseDat = New SqlClient.SqlCommand("select * from
contacto", cnnBaseDat)
adpBaseDat = New SqlClient.SqlDataAdapter(comBaseDat)
dstTablas = New DataSet
adpBaseDat.Fill(dstTablas, "MiTabla")
Catch ex As Exception
MsgBox(ex.Message)
End Try

Dim tablas As Data.DataTable = dstTablas.Tables("MiTabla")
Dim filas As Data.DataRow =
tablas.Rows(Integer.Parse(Me.TextBox6.Text))
Me.TextBox1.Text = filas(0)
Me.TextBox2.Text = filas(1)
Me.TextBox3.Text = filas(2)
Me.TextBox4.Text = filas(3)
Me.TextBox5.Text = filas(4)
If Integer.Parse(Me.TextBox6.Text) = 0 Then
Me.TextBox6.Text = tablas.Rows.Count - 1
End If
Me.TextBox6.Text = Integer.Parse(Me.TextBox6.Text) - 1
End Sub






AUTOR: ING. PEDRO VELEZ DUQUE MSC. 120

P.O.O. III PROGRAMACION WEB CON ASP.NET
BOTON SIGUIENTE

Protected Sub Button4_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Button4.Click
Dim cnnBaseDat As SqlClient.SqlConnection
Dim comBaseDat As SqlClient.SqlCommand
Dim adpBaseDat As SqlClient.SqlDataAdapter
Dim dstTablas As DataSet
cnnBaseDat = New SqlClient.SqlConnection
cnnBaseDat.ConnectionString = "initial
catalog=contacto;Integrated Security=True"
cnnBaseDat.Open()
Try
comBaseDat = New SqlClient.SqlCommand("select * from
contacto", cnnBaseDat)
adpBaseDat = New SqlClient.SqlDataAdapter(comBaseDat)
dstTablas = New DataSet
adpBaseDat.Fill(dstTablas, "MiTabla")
Catch ex As Exception
MsgBox(ex.Message)
End Try
Dim tablas As Data.DataTable = dstTablas.Tables("MiTabla")
Dim filas As Data.DataRow =
tablas.Rows(Integer.Parse(Me.TextBox6.Text))
Me.TextBox1.Text = filas(0)
Me.TextBox2.Text = filas(1)
Me.TextBox3.Text = filas(2)
Me.TextBox4.Text = filas(3)
Me.TextBox5.Text = filas(4)
If tablas.Rows.Count = Integer.Parse(Me.TextBox6.Text) + 1
Then
Me.TextBox6.Text = -1
End If
Me.TextBox6.Text = Integer.Parse(Me.TextBox6.Text) + 1
End Sub










AUTOR: ING. PEDRO VELEZ DUQUE MSC. 121

P.O.O. III PROGRAMACION WEB CON ASP.NET
CONTROL DETAILSVIEW
Construir un formulario con el control DetailsView para visualizar y
modificar los registros de la tabla USUARIO de la base de datos
ADMINISTRACION.
1. Agregue un nuevo Web Form al explorador de soluciones, llmelo
Default3.aspx.
2. Abra la caja de herramientas y arrastre un control DetailsView
hacia el formulario. Se abrir una ventana con la panel de tareas
para informar la fuente de datos. Seleccione New data
source:


3. Informe cul es la fuente de datos, en este caso es una base de
datos.


AUTOR: ING. PEDRO VELEZ DUQUE MSC. 122

P.O.O. III PROGRAMACION WEB CON ASP.NET
4. Elegir la conexin de datos y hace clic en siguiente:


5. Seleccione la tabla USUARIO con algunos campos.


AUTOR: ING. PEDRO VELEZ DUQUE MSC. 123

P.O.O. III PROGRAMACION WEB CON ASP.NET
6. Haga clic en siguiente se ejecuta una consulta de prueba haciendo
clic en el botn de consulta de prueba.



7. Volviendo a tareas de tareas de detailsview, seleccione el
checkbox para activar la paginacin de datos.







AUTOR: ING. PEDRO VELEZ DUQUE MSC. 124

P.O.O. III PROGRAMACION WEB CON ASP.NET
8. seleccione el sqldatasource y en las propiedades compruebe la
cadena de conexin y luego en insertquery, updatequery, deletequery
correspondientes con lassentencias sql:

Insercin de datos

Actualizacin de datos

AUTOR: ING. PEDRO VELEZ DUQUE MSC. 125

P.O.O. III PROGRAMACION WEB CON ASP.NET

Eliminacin de datos


9. En el cuadro de tareas de datailsview, habilitar los checkboxes de
insercin, edicin, eliminacin.



AUTOR: ING. PEDRO VELEZ DUQUE MSC. 126

P.O.O. III PROGRAMACION WEB CON ASP.NET

10. En el detailsview se puede aplicar formatos automticos con
estilos y finalmente se obtiene lo siguiente:






















AUTOR: ING. PEDRO VELEZ DUQUE MSC. 127

P.O.O. III PROGRAMACION WEB CON ASP.NET
Control Formview
Construir un formulario con el control FormView para visualizar los
registros de la tabla ARTICULOS de la base de datos ADMINISTRACION.

1. Agregue un nuevo Web Form en el Solution Explorer. Arrastre el
control FormView hacia el formulario.



2. La fuente de datos ser un Database. Seleccione la tabla Articulos
de la base de datos ADMINISTRACION y todos los campos.


AUTOR: ING. PEDRO VELEZ DUQUE MSC. 128

P.O.O. III PROGRAMACION WEB CON ASP.NET


AUTOR: ING. PEDRO VELEZ DUQUE MSC. 129

P.O.O. III PROGRAMACION WEB CON ASP.NET

3. Aplique un Auto Format segn la opcin.






AUTOR: ING. PEDRO VELEZ DUQUE MSC. 130

P.O.O. III PROGRAMACION WEB CON ASP.NET
4. Ajuste el layout de manera que quepan todos los datos.



5. Guarde el proyecto y ejectelo en el navegador. Navegue en las pginas para visualizar los
registros.










AUTOR: ING. PEDRO VELEZ DUQUE MSC. 131

P.O.O. III PROGRAMACION WEB CON ASP.NET
DataList
Construir un formulario con el control DataList. Este control muestra
diversos registros en la misma pgina en la que usted debe determinar
el rea de datos y el respectivo layout.
1. Agregue un nuevo Web Form al Solution Explorer. Arrastre el
control DataList hacia el formulario. Como en los ejercicios
anteriores seleccione el DataSource, en este caso seleccione la tabla
Rubro.






AUTOR: ING. PEDRO VELEZ DUQUE MSC. 132

P.O.O. III PROGRAMACION WEB CON ASP.NET




AUTOR: ING. PEDRO VELEZ DUQUE MSC. 133

P.O.O. III PROGRAMACION WEB CON ASP.NET


2. Configure con AutoFormat para que el control tenga un aspecto de su agrado.


AUTOR: ING. PEDRO VELEZ DUQUE MSC. 134

P.O.O. III PROGRAMACION WEB CON ASP.NET
3. una vez en editar plantillas, personalice el campo cdigo para
que sea mostrado en el formato adecuado. Para ello, seleccione la
etiqueta del codigo y el enlace Editar enlace de datos. Configure el
formato para General.




4. Guarde el proyecto y ejectelo en el navegador.

También podría gustarte