ASP NET YA
-
Upload
damian-salazar -
Category
Documents
-
view
256 -
download
1
Transcript of ASP NET YA
-
7/29/2019 ASP NET YA
1/104
ASP.NET YA
1 - Pasos para crear un sitio web ASP.Net con el VisualStudio 2008
2 - Creacin, lectura y escritura de archivos de texto. 3 - Clases SQLConnection y SQLCommand (ABM -
Altas, Bajas y Modificaciones) 4 - Clase SQLDataSource (ABM - Altas, Bajas y
Modificaciones) 5 - Clase SQLDataSource (ABM con varias tablas) 6 - Control GridView 7 - Controles de validacin 8 - Upload de archivos al servidor 9 - Cookies y Session. 10 - Creacin de imgenes dinmicas en el servidor. 11 - Master Page 12 - AJAX con ASP.Net
1 - Pasos para crear un sitio web ASP.Net con el Visual Studio2008
Para crear un proyecto web debemos seleccionar desde el entorno del VisualStudio 2008: Archivo ->Nuevo sitio web. Inmediatamente aparece un dilogodonde podemos configurar que versin de Framework ser compatible nuestraaplicacin, la ubicacin dentro del disco donde se almacenar, el lenguaje deprogramacin a utilizar:
http://www.aspnetya.com.ar/detalleconcepto.php?codigo=62http://www.aspnetya.com.ar/detalleconcepto.php?codigo=62http://www.aspnetya.com.ar/detalleconcepto.php?codigo=63http://www.aspnetya.com.ar/detalleconcepto.php?codigo=64http://www.aspnetya.com.ar/detalleconcepto.php?codigo=64http://www.aspnetya.com.ar/detalleconcepto.php?codigo=65http://www.aspnetya.com.ar/detalleconcepto.php?codigo=65http://www.aspnetya.com.ar/detalleconcepto.php?codigo=66http://www.aspnetya.com.ar/detalleconcepto.php?codigo=67http://www.aspnetya.com.ar/detalleconcepto.php?codigo=68http://www.aspnetya.com.ar/detalleconcepto.php?codigo=69http://www.aspnetya.com.ar/detalleconcepto.php?codigo=70http://www.aspnetya.com.ar/detalleconcepto.php?codigo=71http://www.aspnetya.com.ar/detalleconcepto.php?codigo=72http://www.aspnetya.com.ar/detalleconcepto.php?codigo=73http://www.aspnetya.com.ar/detalleconcepto.php?codigo=62http://www.aspnetya.com.ar/detalleconcepto.php?codigo=62http://www.aspnetya.com.ar/detalleconcepto.php?codigo=63http://www.aspnetya.com.ar/detalleconcepto.php?codigo=64http://www.aspnetya.com.ar/detalleconcepto.php?codigo=64http://www.aspnetya.com.ar/detalleconcepto.php?codigo=65http://www.aspnetya.com.ar/detalleconcepto.php?codigo=65http://www.aspnetya.com.ar/detalleconcepto.php?codigo=66http://www.aspnetya.com.ar/detalleconcepto.php?codigo=67http://www.aspnetya.com.ar/detalleconcepto.php?codigo=68http://www.aspnetya.com.ar/detalleconcepto.php?codigo=69http://www.aspnetya.com.ar/detalleconcepto.php?codigo=70http://www.aspnetya.com.ar/detalleconcepto.php?codigo=71http://www.aspnetya.com.ar/detalleconcepto.php?codigo=72http://www.aspnetya.com.ar/detalleconcepto.php?codigo=73 -
7/29/2019 ASP NET YA
2/104
En este ejemplo localizamos en la unidad D y desde el explorador de archivoscreamos 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 framework2.0)Tambin dejamos seleccionado la plantilla a utilizar "Sitio Web ASP.NET)"Ya tenemos el esqueleto bsico para iniciar nuestro sitio web empleando latecnologa de Microsoft.
En la parte izquierda tenemos el Cuadro de herramientas, en esta aparecen lascomponentes visuales (Label, TextBox, Button etc.) que tenemos disponiblespara crear nuestro formulario Web.En el centro aparece la pgina en vista de cdigo (se puede ver en vista de
-
7/29/2019 ASP NET YA
3/104
diseo, Divisor y Cdigo)En la parte derecha disponemos del Explorador de soluciones donde podemosidentificar el directorio donde se almacena nuestra aplicacin web y los archivoscontenidos 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 deuna pgina dinmica ASP.Net, as como la extensin php indica que sucontenido 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 quedefinamos 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 elrecuadro central seleccionamos la pestaa Diseo y desde el cuadro de
herramientas arrastramos un control de tipo Label. Seguidamente desde elcuadro de propiedades ubicado en la pare inferior derecha de la pantallainicializamos la propiedad text con el mensaje que queremos que muestrenuestra Label, en nuestro caso Hola Mundo. Una vez modificada la propiedadText con el mensaje que queremos mostrar y presionada la tecla Enter podemosver como se actualiza la ventana de Diseo en la parte centrar de nuestrapantalla:
Para probar nuestra pequea aplicacin desarrollada debemos presionar eltringulo 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 archivoWeb.config para que la pgina se pueda ejecutar en modo depuracin (esto nospermite 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 defectocon el resultado de la ejecucin de la pgina:
-
7/29/2019 ASP NET YA
4/104
El Visual Studio 2008 instala un servidor web propio que est escuchando en unpuerto desocupado. Luego de cerrar la ventana del navegador debemos detenerla depuracin de nuestra aplicacin para poder modificarla, para esto podemosseleccionar desde el men Depurar -> Detener Depuracin o presionar desde labarra de botones el cuadradito azul (luego de esto aparece el Cuadro deherramientas)
Eventos
Modificaremos ahora nuestra aplicacin para que muestre la fecha del servidoren una Label. Cuando desde el navegador solicitamos una pgina aspx loprimero que se ejecuta es el evento Page_Load. Para poder definir un mtodopara dicho evento hacemos doble clic sobre el WebForm con lo queinmediatamente 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 lafecha actual del servidor:
Protected Sub Page_Load(ByVal sender As Object,
ByVal e As _
System.EventArgs) Handles Me.Load
-
7/29/2019 ASP NET YA
5/104
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 muestreun objeto de una clase Button y una Label.La propiedad Text de la Label la inicializamos con el valor 0 y la propiedad Textdel objeto Button lo inicializamos con la cadena Sumar.El objetivo es que cada vez que se presione el botn se actualice el contenidode la Label con el valor actual ms uno.La forma ms sencilla de generar dicho evento es hacer doble clic sobre elobjeto 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 nosaparecen todos los mtodos disponibles para dicho objeto:
Luego para el evento Button1_Click actualizamos el contenido de la propiedadText de la Label con el valor actual ms uno. El operador que utilizamos es el + yno el & (que nos concatenara el valor y no lo sumara numricamente comonecesitamos en este problema) Podemos utilizar directamente el operador + yaque el segundo operando es un nmero y por lo tanto el Visual Basic convierteautomticamente el primer operando a entero.
Controles Label, Button y TextBox.
Hasta ahora hemos utilizado los controles de tipo Label y Button, ahorautilizaremos 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 vimosanteriormente para crear un nuevo proyecto ASP.NET)Crearemos un proyecto llamado pruebatextbox y desarrollaremos la siguienteinterface:
-
7/29/2019 ASP NET YA
6/104
Disponemos tres Label, dos TextBox y un Button. Las dos primeras Label lasinicializamos con los textos: Ingrese primer valor, Ingrese segundo valor y la
tercera Label borramos todo el contenido de la propiedad Text (como podemosver el visor del Visual Studio muestra el nombre del objeto encerrado entrecorchetes cuando la propiedad Text est vaca)Inicializamos la propiedad Text del objeto de tipo Button con la etiqueta Sumar.Luego codificamos el evento click del objeto de la clase Button (en este eventodebemos extraer el contenido de los dos controles de tipo TextBox y proceder aconvertirlos a tipo de dato entero y sumarlos):
Protected Sub Button1_Click(ByVal sender As
Object, ByVal _
e As System.EventArgs) Handles
Button1.ClickDim 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 objetivorecibir 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 sitioweb llamado pruebaradiobutton.Crearemos una interface similar al problema anterior, con la salvedad que le
-
7/29/2019 ASP NET YA
7/104
agregaremos dos controles de tipo RadioButton para poder indicar si queremossumar o restar los valores ingresados:
Como vemos agregamos dos controles de tipo RadioButton, inicializamos laspropiedades text con los textos Sumar y Restar. Luego para indicar que loscontroles RadioButton estn en el mismo grupo debemos inicializar la propiedadGroupName con el mismo valor (con esto logramos que al seleccionar unRadioButton el otro se desmarca), si nos olvidamos inicializar la propiedadGroupName luego los dos controles de tipo RadioButton se podrn seleccionaren forma simultnea.Si queremos que alguno de los dos RadioButton aparezca seleccionado pordefecto 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:" & resultadoElse
If Me.RadioButton2.Checked Then
resultado = x1 - x2
Me.Label3.Text = "La diferencia de
los dos valores es:" & resultado
End If
-
7/29/2019 ASP NET YA
8/104
End If
End Sub
Cuando se presiona el botn se ejecuta el mtodo Button1_Click donde primeroextraemos el contenido de los dos controles TextBox.
Verificamos con if cual de los dos controles RadioButton se encuentraseleccionado. La propiedad Checked del RadioButton indica si estseleccionado el control o no.
Control CheckBox.
Los controles CheckBox permiten que ms de uno est seleccionado. Similar alos controles RadioButton tiene dos estados (seleccionado o no seleccionado) yesto lo sabemos segn el estado de la propiedad Checked.Codificaremos un nuevo sitio web que permita cargar dos valores y luego calculela suma y/o resta de los valores ingresados. Como podemos seleccionar ambasoperaciones 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
-
7/29/2019 ASP NET YA
9/104
End If
If Me.CheckBox2.Checked Then
resultado = x1 - x2
Me.Label3.Text = Me.Label3.Text & "La" & _ " diferencia de los dos valores es:"
& resultado
End If
End Sub
Disponemos dos if a la misma altura ya que ambos CheckBox pueden estarseleccionados. Previo a los if borramos el contenido de la Label en el caso quetenga el resultado de operaciones anteriores.Luego en el primer if verificamos si el primer CheckBox est seleccionado yprocedemos a inicializar la propiedad Text de la Label con el resultado de la
suma de los dos valores ingresados, seguidamente verificamos con un segundoif si el siguiente CheckBox est seleccionado, en caso afirmativo agregamos alcontenido actual de la Label el resultado de la diferencia de los valoresingresados (Como vemos podemos aadir marcas HTML a la propiedad Text deuna 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 laspropiedades Text (valor a mostrar), Value (valor a retornar en caso de estarseleccionado), Selected (con un valor lgico))
Otra propiedad muy importante del control ListBox es SelectionMode, estaadmite dos valores: Single o Multiple.Crearemos una aplicacin que permita cargar dos valores y mediante un controlListBox poder seleccionar si queremos sumar, restar, multiplicar o dividir dichosvalores (como podemos seleccionar varias operaciones en forma simultneaconfiguraremos la propiedad SelectionMode del ListBox con el valor Multiple)Luego la interface visual a crear es la siguiente (insertamos tambin una Labelluego del botn Calcular, con el objetivo de mostrar los resultados):
-
7/29/2019 ASP NET YA
10/104
Cuando se presiona el botn calcular verificamos cual de las opciones estseleccionada 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 + x2Me.Label3.Text &= "La suma es:" &
suma & "
"End If
If Me.ListBox1.Items(1).Selected Then
Dim resta As Integer = x1 - x2
Me.Label3.Text &= "La diferencia:" &
resta & "
"End If
If Me.ListBox1.Items(2).Selected Then
Dim multi As Integer = x1 * x2
Me.Label3.Text &= "El producto:" &
multi & "
"End If
If Me.ListBox1.Items(3).Selected Then
Dim divi As Integer = x1 / x2
-
7/29/2019 ASP NET YA
11/104
Me.Label3.Text &= "La division:" &
divi & "
"End If
End Sub
Como podemos ver primero vaciamos el contenido de la Label3 y procedemosmediante cuatro if a verificar cuales de los elementos del ListBox se encuentranseleccionados:
If Me.ListBox1.Items(0).Selected Then
Si por ejemplo el primer elemento del ListBox se encuentra seleccionadoprocedemos a sumar los dos valores almacenados en los TextBox y losagregamos a la Label:
Dim suma As Integer = x1 + x2Me.Label3.Text &= "La suma es:" & suma & "
"Control DropDownList.
El control DropDownList permite crear una lista de valores y luego seleccionarsolo uno de ellos, esta es la diferencia fundamental con el control ListBox.Para probar este control implementaremos el problema propuesto con el controlListBox, ahora la interface es la siguiente:
Cargamos las cuatro operaciones bsicas en el control DropDownList y para elevento 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
Me.Label3.Text = "La suma es:" & suma& "
"ElseIf Me.DropDownList1.Items(1).Selected
Then
Dim resta As Integer = x1 - x2
-
7/29/2019 ASP NET YA
12/104
Me.Label3.Text = "La diferencia:" &
resta & "
"ElseIf Me.DropDownList1.Items(2).Selected
Then
Dim multi As Integer = x1 * x2Me.Label3.Text = "El producto:" &
multi & "
"ElseIf Me.DropDownList1.Items(3).Selected
Then
Dim divi As Integer = x1 / x2
Me.Label3.Text = "La division:" &
divi & "
"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 clculocorrespondiente y mostrarlo en la Label3.
Ejercicios propuestos1 Confeccionar una pgina que solicite el ingreso del nombre y apellido de unapersona (cada elemento en un TextBox), luego al presionar un botn mostrar enuna label si alguno de los datos no se carg.2 Confeccionar una pgina que muestre un examen mltiple choice (disponer4 preguntas y tres respuestas posibles por pregunta) utilizar controles de tipoRadioButton 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 funcinIsNumeric si se trata de un nmero. En caso que se trate de un nmero mostrarla cantidad de dgitos que tiene.4 Disponer un conjunto de RadioButton agrupados. Mostrar en las leyendas decada RadioButton distintos buscadores (Google, Bing, Yahoo etc.)Cuando se presione un botn redireccionar a dicho servidor (para redireccionardebemos utilizar la siguiente sintaxisresponse.redirect(http://www.google.com.ar)5 Confeccionar el siguiente formulario para registrarse en un sitio web (utilizarcontroles de la pestaa estandar)
En una Label mostrar los datos cargados en cada control (disponer la Label alfinal del formulario) Hacer por lo menos 5 validaciones y mostrar mensajes deerrores en una Label.
-
7/29/2019 ASP NET YA
13/104
2 - Creacin, lectura y escritura de archivos de texto.
En muchas situaciones es necesario almacenar informacin en el servidor,
tenemos dos alternativas, si la cantidad de datos a almacenar es pequeapodemos utilizar un archivo de texto para ello (en la prxima clase veremoscomo 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 primeroir al formulario de carga y el segundo al listado del contenido del archivo.La pgina Default.aspx:
-
7/29/2019 ASP NET YA
14/104
El primer control HyperLink nos lleva al formulario web que permite cargar elnombre del visitante, su pas y los comentarios.El formulario web requiere tres objetos de la clase TextBox, al tercero donde seingresan los comentarios debemos inicializar la propiedad TextMode con el valorMultiLine.
Disponemos un control de tipo HyperLink para poder retornar a la pginaprincipal.
Cuando se presiona el botn confirmar procedemos a almacenar los datos delformulario en el archivo de texto, si existe los agregamos al final, en caso que noexista se crea el archivo.
Mostramos finalmente en una label que se almacenaron los datos.El cdigo completo para registrar los datos es:
Imports System.IO
Partial Class Default2
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As
Object, _
ByVal e As System.EventArgs)
Handles Button1.Click
Dim arch As NewStreamWriter(Me.Server.MapPath(".") & "/" &
"visitas.txt", True)
arch.WriteLine("Nombre:" &
Me.TextBox1.Text)
arch.WriteLine("
") -
7/29/2019 ASP NET YA
15/104
arch.WriteLine("Pais:" &
Me.TextBox2.Text)
arch.WriteLine("
")arch.WriteLine("Comentarios
")arch.WriteLine(Me.TextBox3.Text)arch.WriteLine("
")arch.WriteLine("")
arch.Close()
Me.Label1.Text = "Datos Registrados"
End Sub
End Class
Primero importamos el espacio de nombres donde est declarada la claseStreamWriter:Imports System.IO
Cuando se presiona el botn confirmar creamos un objeto de la claseStreamWriter y le pasamos en el constructor el path y nombre del archivo a abriro crear segn sea el caso.Para obtener el directorio actual utilizamos el mtodo MapPath del objeto Server:Dim arch As New StreamWriter(Me.Server.MapPath(".") & "/" &"visitas.txt", True)
El valor true que le pasamos en el constructor significa que si el archivo noexiste en el servidor en la carpeta especificada se procede a su creacin y en elcaso que si existe se procede a su apertura y posicionado del puntero de archivoal final del mismo.El mtodo WriteLine de la clase StreamWriter permite almacenar una lnea en elarchivo de texto y el posterior ingreso en forma automtica del salto de lnea:
arch.WriteLine("Nombre:" & Me.TextBox1.Text)arch.WriteLine("
")arch.WriteLine("Pais:" & Me.TextBox2.Text)arch.WriteLine("
")arch.WriteLine("Comentarios
")arch.WriteLine(Me.TextBox3.Text)arch.WriteLine("
")arch.WriteLine("")Cuando finalizamos de trabajar con el archivo procedemos a cerrarlo:arch.Close()
Lectura del archivo de texto.
Creamos una pgina donde mostraremos todos los datos almacenados en elarchivo de texto visitas.txt.El archivo de texto almacena los datos de los visitantes y las marcas HTMLbsicas 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 lomuestre.
-
7/29/2019 ASP NET YA
16/104
Podemos disponer un control de tipo HyperLink para retornar a la pginaprincipal.
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.LoadDim 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.ReadLineLoop
arch.Close()
End Sub
End Class
Importamos el espacio de nombres donde est declarada la claseStreamReader:Imports System.IO
Procedemos a realizar la apertura del archivo, indicando el camino donde seencuentra:
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 Stringlinea = arch.ReadLine
El mtodo ReadLine de la clase StreamReader retorna el contenido de toda unalnea del archivo de texto. En caso que no haya ms lneas en el archivo de textoel mtodo ReadLine retorna el valor Nothing.
-
7/29/2019 ASP NET YA
17/104
El while nos permite recorrer todo el archivo y cargar cada lnea leda en laLabel1:
Do While Not linea Is NothingMe.Label1.Text = Me.Label1.Text & linealinea = arch.ReadLine
Loop
Finalmente procedemos a cerrar el archivo:arch.Close()
Contador de pginas vistas.
Confeccionaremos ahora un simple contador de pginas utilizando un archivo detexto de una sola lnea. Cada vez que un navegador solicite la pginamostraremos el contador.
Disponemos una Label para mostrar el valor del contador que se almacena en elarchivo de texto.En el evento Page_Load hacemos todo el algoritmo:
Imports System.IO
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender AsObject, _
ByVal e As System.EventArgs) Handles
Me.Load
If File.Exists(Me.Server.MapPath(".") &
"/" & "contador.txt") Then
Dim arch1 As New
StreamReader(Me.Server.MapPath(".") & "/" &
"contador.txt")
Dim conta As Integer
conta = arch1.ReadLineconta = conta + 1
arch1.Close()
Dim arch2 As New
StreamWriter(Me.Server.MapPath(".") & "/" &
"contador.txt")
-
7/29/2019 ASP NET YA
18/104
arch2.WriteLine(conta)
arch2.Close()
Me.Label1.Text = conta
Else
Dim arch As NewStreamWriter(Me.Server.MapPath(".") & "/" &
"contador.txt")
arch.WriteLine("1")
arch.Close()
Me.Label1.Text = "1"
End If
End Sub
End Class
Mediante un if verificamos si existe el archivo que almacena el contador (la clase
File tiene un mtodo esttico llamado Exists que retorna true si existe el archivoen 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 sunica lnea:
Dim arch1 As New StreamReader(Me.Server.MapPath(".") & "/"& "contador.txt")
Dim conta As Integerconta = arch1.ReadLineconta = conta + 1arch1.Close()
Luego procedemos a crearlo nuevamente y almacenar el valor que acabamos de
leer, previo a incrementarlo en uno (mostramos en la Label el valor del contadoractual):
Dim arch2 As New StreamWriter(Me.Server.MapPath(".") & "/"& "contador.txt")
arch2.WriteLine(conta)arch2.Close()Me.Label1.Text = conta
Si el archivo no existe procedemos a crearlo almacenando el valor 1:Dim arch As New StreamWriter(Me.Server.MapPath(".") & "/" &
"contador.txt")arch.WriteLine("1")arch.Close()Me.Label1.Text = "1"
Ejercicios propuestos1 Confeccionar un sitio que permita ingresar los datos del curriculum de unapersona y almacenarlos en un archivo de texto.
-
7/29/2019 ASP NET YA
19/104
3 - Clases SQLConnection y SQLCommand (ABM - Altas, Bajas yModificaciones)
Con ASP.Net podemos comunicarnos a distintos gestores de base de datoscomo pueden ser SQL Server, Oracle, Access, MySQL etc.Nosotros trabajaremos con el gestor de base de datos SQL Server, uno por serel ms empleado cuando se utiliza la tecnologa de ASP.Net en el desarrollo desitios web dinmicos.En esta clase especificaremos todo el cdigo necesario para acceder al gestorde base de datos, desde la cadena de conexin hasta la implementacin de loscomandos SQL a enviar.
ABM (Altas, Bajas y Modificaciones)
Crearemos una base de datos en SQL Server llamada: administracin y dentrode la misma definiremos una tabla llamada usuarios con tres campos:nombre varchar(30) Clave primariaclave varchar(30)mail varchar(30)
Crearemos un sitio web en el Visual Studio 2008 llamado abm1.La primer pgina solo tendr los hipervnculos a otras pginas que tendrn porobjetivo efectuar una el alta de usuarios, otra la baja, otra las modificaciones ypor ltimo otra la consulta:
Para crear esta interface insertaremos cuatro objetos de la clase HyperLink,como mnimo debemos inicializar las propiedades text (es el texto que mostrarel hipervnculo en el navegador y la propiedad NavigateUrl que indica el nombrede la pgina que debe cargar el navegador cuando se presione el hipervnculo)Como todava no tenemos creada las otras cuatro pginas no podemosinicializar la propiedad NavigateUrl de cada HyperLink.Como segundo paso creemos las cuatro pginas, para ello desde el men:Archivo -> Nuevo archivo seleccionamos la plantilla Web Forms y en la parte
-
7/29/2019 ASP NET YA
20/104
inferior definimos el nombre del archivo aspx.Los nombres de las cuatro pginas a crear sern:altausuario.aspxconsultausuario.aspxbajausuario.aspxmodificacionusuario.aspx
Una vez que hemos creado las cuatro pginas aspx podemos proceder aenlazar la propiedad NavigateUrl de cada control HyperLink.Cuando seleccionamos la propiedad NavigateUrl aparece un dialogo que nospermite seleccionar la pgina aspx a enlazar.Una vez inicializada la propiedad NavigateUrl podremos ver que el texto aparecesubrayado (indicando que se trata de un hipervnculo)
Definicin de la cadena de conexin con la base de datos en elarchivo web.config
Web.config es el archivo principal de opciones de configuracin para unaaplicacin web en ASP.NET.
El archivo es un documento XML que define informacin de configuracinconcerniente a la aplicacin web. El archivo web.config contiene informacin quecontrola la carga de mdulos, configuraciones de seguridad, configuraciones delestado de la sesin, opciones de compilacin y el lenguaje de la aplicacin.El archivo web.config contiene tambin la cadenas de conexin a la base dedatos.Debemos modificar la seccin:
y remplazarlo por:
Como vemos en la propiedad connectionString indicamos en Initial Catalog elnombre de la base de datos que hemos creado en SQL Server.
Altas
Activemos desde el Visual Studio 2008 la pestaa altausuario.aspx para elaborarla interface visual que nos permita efectuar la carga de datos de usuarios:
-
7/29/2019 ASP NET YA
21/104
Como podemos ver disponemos tres controles de tipo TextBox, el que solicita elingreso de la clave modificamos la propiedad TextMode con el valor Password,los otros dos los dejamos con el valor SingleLine.Disponemos un objeto de la clase Button y una Label donde mostraremos unmensaje si el alta se efectu correctamente.
Por ltimo disponemos un objeto de la clase HyperLink configurando lapropiedad NavigateUrl con la direccin de la pgina principal (Default.aspx)Ahora codificamos el evento clic del botn de alta:
Imports System.Data.SqlClient
Partial Class altausuario
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As
Object, _
ByVal e As System.EventArgs)Handles Button1.Click
Try
Dim s As String
s =
ConfigurationManager.ConnectionStrings("administr
acion").ConnectionString
Dim conexion As New SqlConnection(s)
conexion.Open()
Dim comando As New SqlCommand("insert
into usuarios(nombre,clave,mail) values('" _
& Me.TextBox1.Text & "','" &
Me.TextBox2.Text & "','" _
& Me.TextBox3.Text & "')",
conexion)
comando.ExecuteNonQuery()
Me.Label1.Text = "Se registr el
usuario"
conexion.Close()
Catch ex As SqlExceptionMe.Label1.Text = ex.Message
End Try
End Sub
End Class
Lo primero que debemos hacer es importar el espacio de nombres donde seencuentra definida la clase SqlException:
-
7/29/2019 ASP NET YA
22/104
Imports System.Data.SqlClient
Al presionar el botn, primero extraemos la cadena de conexin que tenemosalmacenada en el archivo web.config:
s =ConfigurationManager.ConnectionStrings("administracion").ConnectionString
Creamos un objeto de la clase SQLConnection indicando como parmetro lacadena de conexin que rescatamos anteriormente:
Dim conexion As New SqlConnection(s)
Abrimos la conexin:conexion.Open()
Creamos un objeto de la clase SqlCommand crendolo con los datos cargadosen los controles TextBox:
Dim comando As New SqlCommand("insert intousuarios(nombre,clave,mail) values('" _
& Me.TextBox1.Text & "','" & Me.TextBox2.Text & "','" _& Me.TextBox3.Text & "')", conexion)
Pedimos a SQL Server que ejecute el comando especificado anteriormente:
comando.ExecuteNonQuery()Cerramos la conexin:conexion.Close()
Todo esto lo hacemos capturando la excepcin SQLException.En caso de dispararse un error ser capturado por el Catch y procederemos amostrar en una Label el mensaje de error respectivo:
Catch ex As SqlExceptionMe.Label1.Text = ex.Message
End Try
Consultas
Seleccionamos del Explorador de soluciones la pgina consultausuario.aspx yprocedemos a elaborar la siguiente interface visual (disponemos un TextBox, unButton, una Label y un HyperLink:
El cdigo del evento click es:
Imports System.Data.SqlClient
Partial Class consultausuario
Inherits System.Web.UI.Page
-
7/29/2019 ASP NET YA
23/104
Protected Sub Button1_Click(ByVal sender As
Object, _
ByVal e As System.EventArgs) Handles
Button1.ClickTry
Dim s As String
s =
ConfigurationManager.ConnectionStrings("administr
acion").ConnectionString
Dim conexion As New SqlConnection(s)
conexion.Open()
Dim comando As New SqlCommand("select
nombre,clave,mail from usuarios " _
& " where nombre='" &Me.TextBox1.Text & "'", conexion)
Dim registro As SqlDataReader =
comando.ExecuteReader
If registro.Read Then
Me.Label1.Text = "Clave:" &
registro("clave") & "
" _& "Mail:" &
registro("mail")
Else
Me.Label1.Text = "No existe un
usuario con dicho nombre"
End If
Catch ex As SqlException
Me.Label1.Text = ex.Message
End Try
End Sub
End Class
Para poder recuperar los datos lo hacemos creando un objeto de la clase
SqlDataReader e inicializndolo mediante la llamada del mtodo ExecuteReaderde la clase SQLCommand:
Dim registro As SqlDataReader = comando.ExecuteReader
Luego recorremos el SqlDataReader (como este caso puede retornar cero o unafila lo hacemos mediante un if:If registor.Read Then
Si el mtodo Read retorna true luego podemos acceder a la fila recuperada conel select.
-
7/29/2019 ASP NET YA
24/104
Bajas
Seleccionamos del Explorador de soluciones la pgina bajausuario.aspx yprocedemos a elaborar la siguiente interface visual:
Luego el cdigo a ejecutar cuando se presiona el botn Borrar de la pgina es:
Imports System.Data.SqlClient
Partial Class bajausuarioInherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As
Object, _
ByVal e As System.EventArgs)
Handles Button1.Click
Try
Dim s As String
s =
ConfigurationManager.ConnectionStrings("administracion").ConnectionString
Dim conexion As New SqlConnection(s)
conexion.Open()
Dim comando As New SqlCommand("delete
from usuarios where nombre='" & Me.TextBox1.Text
& "'", conexion)
Dim cant As Integer =
comando.ExecuteNonQuery
If cant = 1 Then
Me.Label1.Text = "Se borr el
usuario"
Else
Me.Label1.Text = "No existe un
usuario con dicho nombre"
End If
-
7/29/2019 ASP NET YA
25/104
conexion.Close()
Catch ex As SqlException
Me.Label1.Text = ex.Message
End Try
End SubEnd Class
El mtodo ExecuteNonQuery retorna un entero y representa la cantidad de filasborradas de la tabla.
Modificaciones
Por ltimo implementaremos la modificacin de datos. Seleccionamos delExplorador de soluciones la pgina modificacionusuario.aspx y procedemos aelaborar la siguiente interface visual:
Para efectuar la modificacin de datos de un usuario procederemos primero a labsqueda de los datos actuales.Luego el cdigo para los eventos clic de los dos botones es:
Imports System.Data.SqlClient
Partial Class modificacionusuario
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As
Object, _
ByVal e AsSystem.EventArgs) Handles Button1.Click
Try
Dim s As String
s =
ConfigurationManager.ConnectionStrings("administr
acion").ConnectionString
-
7/29/2019 ASP NET YA
26/104
Dim conexion As New SqlConnection(s)
conexion.Open()
Dim comando As New SqlCommand("select
nombre,clave,mail from usuarios " _
& " where nombre='" &Me.TextBox1.Text & "'", conexion)
Dim registro As SqlDataReader =
comando.ExecuteReader
If registro.Read Then
Me.TextBox2.Text =
registro("clave")
Me.TextBox3.Text =
registro("mail")
Else
Me.Label1.Text = "No existe unusuario con dicho nombre"
End If
Catch ex As SqlException
Me.Label1.Text = ex.Message
End Try
End Sub
Protected Sub Button2_Click(ByVal sender As
Object, _
ByVal e As System.EventArgs)
Handles Button2.Click
Try
Dim s As String
s =
ConfigurationManager.ConnectionStrings("administr
acion").ConnectionString
Dim conexion As New SqlConnection(s)
conexion.Open()
Dim comando As New SqlCommand("updateusuarios set " & _
"clave='" & Me.TextBox2.Text & _
"',mail='" & Me.TextBox3.Text &
_
"' where nombre='" &
Me.TextBox1.Text & "'", conexion)
-
7/29/2019 ASP NET YA
27/104
Dim cant As Integer =
comando.ExecuteNonQuery()
If cant = 1 Then
Me.Label1.Text = "Datos
Modificados"Else
Me.Label1.Text = "No existe el
usuario"
End If
conexion.Close()
Catch ex As SqlException
Me.Label1.Text = ex.Message
End Try
End Sub
End Class
El botn Buscar hace lo mismo que vimos en la consulta. Luego cuando sepresiona el botn Modificar procedemos a hacer un update de la tabla usuarioscon los datos cargados en los TextBox.
Ejercicios propuestos1 Crear una tabla:alumnos (dni varchar(8), apellidonom varchar(50), provincia varchar(30))
Confeccionar una serie de pginas que permitan efectuar altas, bajas,modificaciones y consultas.
4 - Clase SQLDataSource (ABM - Altas, Bajas y Modificaciones)
ABM (Altas, Bajas y Modificaciones)
Trabajaremos con la misma base de datos de la clase anterior: administracin yla tabla que cremos:nombre varchar(30) Clave primariaclave varchar(30)mail varchar(30)
Crearemos un sitio web en el Visual Studio 2008 llamado abm2.La primer pgina solo tendr los hipervnculos a otras pginas que tendrn porobjetivo efectuar una el alta de usuarios, otra la baja, otra las modificaciones ypor ltimo otra la consulta:
-
7/29/2019 ASP NET YA
28/104
Para crear esta interface insertaremos cuatro objetos de la clase HyperLink,como mnimo debemos inicializar las propiedades text (es el texto que mostrarel hipervnculo en el navegador y la propiedad NavigateUrl que indica el nombrede la pgina que debe cargar el navegador cuando se presione el hipervnculo)
Como todava no tenemos creada las otras cuatro pginas no podemosinicializar la propiedad NavigateUrl de cada HyperLink.Como segundo paso creemos las cuatro pginas, para ello desde el men:Archivo -> Nuevo archivo seleccionamos la plantilla Web Forms y en la parteinferior definimos el nombre del archivo aspx. Los nombres de las cuatro pginasa crear sern:altausuario.aspxconsultausuario.aspxbajausuario.aspxmodificacionusuario.aspx
Una vez que hemos creado las cuatro pginas aspx podemos proceder aenlazar la propiedad NavigateUrl de cada control HyperLink.
Cuando seleccionamos la propiedad NavigateUrl aparece un dialogo que nospermite seleccionar la pgina aspx a enlazar.Una vez inicializada la propiedad NavigateUrl podremos ver que el texto aparecesubrayado (indicando que se trata de un hipervnculo)
Altas
Activemos desde el Visual Studio 2008 la pestaa altausuario.aspx para elaborarla interface visual que nos permita efectuar la carga de datos de usuarios:
-
7/29/2019 ASP NET YA
29/104
Como podemos ver disponemos tres controles de tipo TextBox, el que solicita elingreso de la clave modificamos la propiedad TextMode con el valor Password,los otros dos los dejamos con el valor SingleLine.Disponemos un objeto de la clase Button y una Label donde mostraremos unmensaje si el alta se efectu correctamente.
Por ltimo disponemos un objeto de la clase HyperLink configurando lapropiedad NavigateUrl con la direccin de la pgina principal (Default.aspx)
Conexin con la base de datos
Ahora veremos como crear una conexin con nuestra base de datos que hemoscreado desde SQL Server.
Seleccionamos la solapa Explorador de servidores y presionamos botnderecho sobre Conexiones a datos, elegimos la opcin Agregar conexin,aparece un ventana de configuracin:
-
7/29/2019 ASP NET YA
30/104
Debemos seleccionar el nombre del servidor y posteriormente el nombre de labase de datos.Podemos presionar luego el botn Probar conexin para comprobar la correctaconfiguracin de la conexin.Presionamos por ltimo el botn Aceptar, veremos luego que aparece en lapestaa del Explorador de servidores la conexin de datos que acabamos decrear. Podemos presionar sobre el signo ms que aparece en nuestra conexiny ver que tenemos disponible el acceso a las Tablas, Vistas, Procedimientosalmacenados etc. definidos para la base de datos:
-
7/29/2019 ASP NET YA
31/104
Podemos ahora desde el explorador de servidores ver las tablas, campos deuna tabla e inclusive si presionamos el botn derecho del mouse sobre la tablausuarios podemos ver los datos de la misma.Ahora podemos empezar con el alta de usuarios.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 llamadoSqlDataSource1 que es de la clase SqlDataSource. Este componente visual nose ver en tiempo de ejecucin como veremos ms adelante.
-
7/29/2019 ASP NET YA
32/104
Seleccionamos el control SqlDataSource1 del formulario y en la ventana dePropiedades inicializamos la propiedad ConnectionString con el valor queaparece al presionar la pestaa de la derecha (bsicamente es la cadena deconexin 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 debemosconfigurar el comando INSERT:
Este dilogo es muy importante ingresar correctamente el comando SQL
parametrizando los valores que sern remplazados en tiempo de ejecucin conlos 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 elbotn Actualizar parmetros.Si queremos comprobar si nuestro comando SQL est correcto presionamos elbotn Generador de consultas y desde este nuevo dilogo presionamos elbotn Ejecutar consulta:
-
7/29/2019 ASP NET YA
33/104
(Tambin desde este dilogo podemos codificar la consulta, probarla yfinalmente confirmarla)Lo que no hay que olvidarse nunca es que cada vez que agregamos o borramosun parmetro de nuestro comando SQL es presionar el botn Actualizarparmetros.Ahora codificamos el evento clic del botn de alta:
Imports System.Data.SqlClient
Partial Class altausuario
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As
Object, _
ByVal e As System.EventArgs) Handles
Button1.Click
Try
Me.SqlDataSource1.InsertParameters("nombre").Defa
ultValue = Me.TextBox1.Text
Me.SqlDataSource1.InsertParameters("clave").Defau
ltValue = Me.TextBox2.Text
Me.SqlDataSource1.InsertParameters("mail").Defaul
tValue = Me.TextBox3.Text
-
7/29/2019 ASP NET YA
34/104
Me.SqlDataSource1.Insert()
Me.Label1.Text = "Se efectu la carga."
Catch ex As SqlException
Me.Label1.Text = ex.Message
End TryEnd Sub
End Class
Lo primero que debemos hacer es importar el espacio de nombres donde seencuentra definida la clase SqlException:Imports System.Data.SqlClient
Al presionar el botn inicializamos los tres parmetros del comando SQL quehemos configurado en el SqlDataSource. Para acceder a dichos parmetrosdisponemos de la propiedad InsertParameters que le indicamos como subndiceel 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.
Consultas
Seleccionamos del Explorador de soluciones la pgina consultausuario.aspx yprocedemos a elaborar la siguiente interface visual (disponemos un TextBox, unButton, una Label, un HyperLink y un SqlDataSoruce:
Configuramos el SqlDataSource1, luego de seleccionarlo con el mousemodificamos la propiedad ConnectionString (con la conexin creadaanteriormente) y en el dilogo que abre la propiedad SelectQuery procedemos a
codificar el comando select:select clave,mail from usuarios where nombre=@nombre
Es decir recuperamos la clave y mail de un determinado usuario (recordar depresionar el botn Actualizar parmetros)El cdigo del evento clic es:
Imports System.Data.SqlClient
-
7/29/2019 ASP NET YA
35/104
Partial Class consultausuario
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As
Object, _ ByVal e As System.EventArgs) Handles
Button1.Click
Try
Me.SqlDataSource1.SelectParameters("nombre").Defa
ultValue = Me.TextBox1.Text
Me.SqlDataSource1.DataSourceMode =
SqlDataSourceMode.DataReader
Dim datos As SqlDataReader
datos =Me.SqlDataSource1.Select(DataSourceSelectArgument
s.Empty)
If datos.Read Then
Me.Label1.Text = "Clave:" &
datos("clave") & "
" _& "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 SqlDataReaderdebemos configurar el SqlDataSource indicando a la propiedadDataSourceMode el siguiente valor:
Me.SqlDataSource1.DataSourceMode = SqlDataSourceMode.DataReader
Ahora cuando llamemos al mtodo select del SqlDataSource lo hacemos con lasiguiente sintaxis:Dim datos As SqlDataReaderdatos = Me.SqlDataSource1.Select(DataSourceSelectArguments.Empty)
Luego recorremos el SqlDataReader (como este caso puede retornar cero o unafila lo hacemos mediante un if:If datos.Read Then
-
7/29/2019 ASP NET YA
36/104
Si el mtodo Read retorna true luego podemos acceder a la fila recuperada conel select.
Bajas
Seleccionamos del Explorador de soluciones la pgina bajausuario.aspx yprocedemos a elaborar la siguiente interface visual:
Inicializamos la propiedad ConnectionString del SqlDataSource1 con la conexinque 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 bajausuario
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As
Object, _
ByVal e As System.EventArgs)
Handles Button1.Click
-
7/29/2019 ASP NET YA
37/104
Try
Me.SqlDataSource1.DeleteParameters("nombre").Defa
ultValue = Me.TextBox1.Text
Dim cant As Integercant = 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.MessageEnd Try
End Sub
End Class
Procedemos a inicializar el parmetro y luego llamamos al mtodo Delete delSqlDataSource. El mtodo Delete retorna un entero y representa la cantidad defilas borradas de la tabla.
Modificaciones
Por ltimo implementaremos la modificacin de datos. Seleccionamos delExplorador de soluciones la pgina modificacionusuario.aspx y procedemos aelaborar la siguiente interface visual:
Para efectuar la modificacin de datos de un usuario procederemos primero a labsqueda de los datos actuales. Esto hace que necesitemos un control de la
-
7/29/2019 ASP NET YA
38/104
clase SqlDataSource.El SqlDataSource1 nos permite consultar los datos de un usuario por su nombrey mostrar el resultado en dos controles de tipo TextBox. La propiedadSelectQuery: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 modificacionusuario
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").Defa
ultValue = Me.TextBox1.Text
Me.SqlDataSource1.DataSourceMode =
SqlDataSourceMode.DataReader
Dim datos As SqlDataReader
datos =Me.SqlDataSource1.Select(DataSourceSelectArgument
s.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 SqlExceptionMe.Label1.Text = ex.Message
End Try
End Sub
-
7/29/2019 ASP NET YA
39/104
Protected Sub Button2_Click(ByVal sender As
Object, _
ByVal e As System.EventArgs) Handles
Button2.Click
Try
Me.SqlDataSource1.UpdateParameters("clave").Defau
ltValue = Me.TextBox2.Text
Me.SqlDataSource1.UpdateParameters("mail").Defaul
tValue = Me.TextBox3.Text
Me.SqlDataSource1.UpdateParameters("nombre").Defa
ultValue = Me.TextBox1.Text
Dim cant As Integercant = 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
5 - Clase SQLDataSource (ABM con varias tablas)
ABM
Continuamos con la base de datos que creamos en la clase anterior en SQLServer llamada: administracin y dentro de la misma crearemos ahora dosnuevas tablas:Tabla: articuloscodigo int Clave primaria e identidad.descripcion varchar(50)precio floatcodigorubro int
-
7/29/2019 ASP NET YA
40/104
Tabla: rubrosCodigo int Clave primaria e identidaddescripcin varchar(50)
Crearemos un sitio web en el Visual Studio 2008 llamado abm3.La primer pgina solo tendr los hipervnculos a otras pginas que tendrn por
objetivo efectuar una el alta de articulos, otra la baja, otra las modificaciones ypor ltimo otra la consulta.Desde la herramienta que utilizamos para crear la base de datos y las tablasprocedemos a cargar algunos rubros en forma manual (esto nos permitir entrarde lleno en los algoritmos que requieren trabajar con las dos tablas)Para crear esta interface insertaremos cuatro objetos de la clase HyperLink,como mnimo debemos inicializar las propiedades text (es el texto que mostrarel hipervnculo en el navegador y la propiedad NavigateUrl que indica el nombrede la pgina que debe cargar el navegador cuando se presione el hipervnculo)Como todava no tenemos creada las otras cuatro pginas no podemosinicializar la propiedad NavigateUrl de cada HyperLink.
Como segundo paso creemos las cuatro pginas, para ello desde el men:Archivo -> Nuevo archivo seleccionamos la plantilla Web Forms y en la parteinferior definimos el nombre del archivo aspx.Los nombres de las cuatro pginas a crear sern:altaarticulos.aspxconsultaarticulos.aspxbajaarticulos.aspxmodificacionarticulos.aspx
Una vez que hemos creado las cuatro pginas aspx podemos proceder aenlazar la propiedad NavigateUrl de cada control HyperLink.Cuando seleccionamos la propiedad NavigateUrl aparece un dilogo que nospermite seleccionar la pgina aspx a enlazar.
Una vez inicializada la propiedad NavigateUrl podremos ver que el texto aparecesubrayado (indicando que se trata de un hipervnculo):
Altas
Activemos desde el Visual Studio 2008 la pestaa altaarticulos.aspx paraelaborar la interface visual que nos permita efectuar la carga de datos deartculos:
-
7/29/2019 ASP NET YA
41/104
Como podemos ver disponemos dos controles de tipo TextBox, un control detipo DropDownList el cual nos permitir seleccionar el rubro que pertenece elarticulo que estamos cargando.Disponemos un objeto de la clase Button y una Label donde mostraremos unmensaje si el alta se efectu correctamente.Por ltimo disponemos un objeto de la clase HyperLink configurando lapropiedad NavigateUrl con la direccin de la pgina principal (Default.aspx)
Conexin con la base de datos.
Utilizaremos la misma conexin que creamos en la clase anterior. Si desde elVisual Estudio activamos la pestaa Explorador de servidores veremos que estpresente la conexin con la base de datos administracin.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 llamadoSqlDataSource1 que es de la clase SqlDataSource.
Ahora modificaremos el nombre de este objeto (SqlDataSource1) porSqlDataSourceRubros.Este primer SqlDataSource nos permitir rescatar los datos de los rubros (codigoy descripcin) y poblar el control DropDownList.Seleccionamos el control SqlDataSourceRubros del formulario y en la ventanade Propiedades inicializamos la propiedad ConnectionString con el valor queaparece al presionar la pestaa de la derecha (bsicamente es la cadena deconexin que creamos anteriormente)Ahora nos queda configura la propiedad SelectQuery con el comando SQL quenos 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 rubrosUna vez hecho esta configuracin procedemos a codificar el enlace entre elDropDonwList1 y el SqlDataSourceRubros en el evento Load de la pgina:
Partial Class altaarticulos
Inherits System.Web.UI.Page
-
7/29/2019 ASP NET YA
42/104
Protected Sub Page_Load(ByVal sender As Object,
_
ByVal e As System.EventArgs) Handles
Me.Load
If Me.IsPostBack = False ThenMe.DropDownList1.DataSource
=Me.SqlDataSourceRubros
Me.DropDownList1.DataTextField =
"descripcion"
Me.DropDownList1.DataValueField = "codigo"
Me.DropDownList1.DataBind()
End If
End Sub
End Class
La propiedad IsPostBack de la pgina almacena false la primera vez quesolicitamos la pgina desde el navegador, de ah en ms cada vez quepresionamos un botn de la pgina (Alta por ejemplo) la propiedad IsPostBackalmacena true.Con esta condicin logramos que la carga del control DropDownList1 se ejecutesolo la primera vez que solicitamos la pgina.Debemos inicializar tres propiedades del control DropDownList para cargar losdatos de los rubros. La propiedad DataSource la inicializamos con la referencia anuestro objeto SqlDataSourceRubros. Las propiedades DataTextField yDataValueField deben inicializarse con los nombres de las columnas de la tablarubros que deben visualizarse y seleccionarse en el control. Por ltimo llamamosal mtodo DataBind para que se genere el HTML del control.Ahora procedemos a agregar un segundo objeto de la clase SqlDataSource quenos permitir actualizar la tabla artculos.Seleccionamos el control SqlDataSource1 del formulario y le asignamos unnombre ms significativo (SqlDataSourceArticulos) y en la ventana dePropiedades inicializamos la propiedad ConnectionString con el valor queaparece al presionar la pestaa de la derecha.Ahora nos queda configura la propiedad InsertQuery con el comando SQL quenos permite insertar un registro en una tabla.La propiedad InsertQuery nos abre una ventana de dilogo donde debemosconfigurar el comando INSERT:
Decamos en la clase anterior que este dilogo es muy importante ingresarcorrectamente el comando SQL parametrizando los valores que sernremplazados 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 elbotn Actualizar parmetros.
-
7/29/2019 ASP NET YA
43/104
Si queremos comprobar si nuestro comando SQL est correcto presionamos elbotn Generador de consultas y desde este nuevo dilogo presionamos elbotn Ejecutar consulta:Lo que no hay que olvidarse nunca es que cada vez que agregamos o borramosun parmetro de nuestro comando SQL es presionar el botn Actualizarparmetros.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.SqlDataSourceArticulos.InsertParameters("descr
ipcion").DefaultValue = Me.TextBox1.Text
Me.SqlDataSourceArticulos.InsertParameters("preci
o").DefaultValue = Me.TextBox2.Text
Me.SqlDataSourceArticulos.InsertParameters("codigorubro").DefaultValue = _
Me.DropDownList1.SelectedValue
Me.SqlDataSourceArticulos.Insert()
Me.Label1.Text = "Se efectu la carga"
Catch ex As Exception
Me.Label1.Text = ex.Message
-
7/29/2019 ASP NET YA
44/104
End Try
End Sub
Lo primero que debemos hacer es importar el espacio de nombres donde seencuentra definida la clase SqlException:Imports System.Data.SqlClient
Al presionar el botn inicializamos los tres parmetros del comando SQL quehemos configurado en el SqlDataSource. Para acceder a dichos parmetrosdisponemos de la propiedad InsertParameters que le indicamos como subndiceel nombre del parmetro.Lo que difiere de la clase anterior es la inicializacin del parmetro codigorubrocon el valor que rescatamos de la propiedad SelectedValue del controlDropDownList1.Luego de inicializar los tres parmetros procedemos a llamar al mtodo Insert dela clase SqlDataSource.Todo esto lo hacemos capturando la excepcin SQLException.
Consultas
Seleccionamos del Explorador de soluciones la pgina consultaarticulos.aspx yprocedemos a elaborar la siguiente interface visual (disponemos un TextBox, unButton, una Label, un HyperLink y un SqlDataSource):
Configuramos el SqlDataSource1, luego de seleccionarlo con el mousemodificamos la propiedad ConnectionString (con la conexin creadaanteriormente) y en el dilogo que abre la propiedad SelectQuery procedemos acodificar 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.codigorubrowhere ar.codigo=@codigo
Es decir recuperamos la descripcin del artculo, su precio y la descripcin delrubro de la otra tabla (recordar de presionar el botn Actualizar parmetros)El cdigo del evento clic es:
Imports System.Data.SqlClient
-
7/29/2019 ASP NET YA
45/104
Partial Class consultaarticulos
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").Defa
ultValue = Me.TextBox1.Text
Me.SqlDataSource1.DataSourceMode =
SqlDataSourceMode.DataReader
Dim datos As SqlDataReader
datos =SqlDataSource1.Select(DataSourceSelectArguments.E
mpty)
If datos.Read Then
Me.Label1.Text = "Descripcion:" & _
datos("descriarticulo") &
"
" & _"Precio:" & datos("precio") &
"
" & _"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
Para poder recuperar los datos mediante un objeto de la clase SqlDataReaderdebemos configurar el SqlDataSource indicando a la propiedadDataSourceMode el siguiente valor:
Me.SqlDataSource1.DataSourceMode = SqlDataSourceMode.DataReader
Ahora cuando llamemos al mtodo select del SqlDataSource lo hacemos con lasiguiente sintaxis:Dim datos As SqlDataReaderdatos = Me.SqlDataSource1.Select(DataSourceSelectArguments.Empty)
-
7/29/2019 ASP NET YA
46/104
Luego recorremos el SqlDataReader (como este caso puede retornar cero o unafila lo hacemos mediante un if):If datos.Read Then
Si el mtodo Read retorna true luego podemos acceder a la fila recuperada conel select.
Bajas
Seleccionamos del Explorador de soluciones la pgina bajaarticulos.aspx yprocedemos a elaborar la siguiente interface visual:
Inicializamos la propiedad ConnectionString del SqlDataSource1 con la conexinque 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 bajaarticulos
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As
Object, ByVal e As System.EventArgs) HandlesButton1.Click
Try
Me.SqlDataSource1.DeleteParameters("codigo").Defa
ultValue = Me.TextBox1.Text
Dim cant As Integer
cant = Me.SqlDataSource1.Delete
If cant = 1 Then
Me.Label1.Text = "Se borr el
artculo"Else
Me.Label1.Text = "No existe el
codigo"
End If
Catch ex As Exception
-
7/29/2019 ASP NET YA
47/104
Me.Label1.Text = ex.Message
End Try
End Sub
End Class
Procedemos a inicializar el parmetro y luego llamamos al mtodo Delete delSqlDataSource. El mtodo Delete retorna un entero y representa la cantidad defilas borradas de la tabla.
Modificaciones.
Por ltimo implementaremos la modificacin de datos. Seleccionamos delExplorador de soluciones la pgina modificacionartculos.aspx y procedemos aelaborar la siguiente interface visual:
Para efectuar la modificacin de datos de un artculo procederemos primero a labsqueda de los datos actuales. Esto hace que necesitemos un primer controlde tipo SqlDataSource (que llamamos SqlDataSourceArticulos)El primer SqlDataSource nos permite consultar los datos de un artculo por sucdigo y mostrar el resultado en dos controles de tipo TextBox y en un control detipo DropDownList el rubro que pertenece.Para inicializar el DropDownList debemos crear un segundo SqlDataSource(SqlDataSourceRubros)
El SqlDataSourceArticulos debemos configurar las propiedades:- ConnectionString.- SelectQuery
select * from articuloswhere codigo=@codigo:
- UpdateQueryupdate articulos set descripcion=@descripcion,
precio=@precio,codigorubro=@codigorubro
where codigo=@codigo
-
7/29/2019 ASP NET YA
48/104
El SqlDataSourceRubros debemos configurar las propiedades:- ConnectionString.- SelectQuery
select * from rubros
Luego el cdigo para los eventos clic de los dos botones es:
Imports System.Data.SqlClientPartial Class modificacionarticulos
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As
Object, _
ByVal e As System.EventArgs) Handles
Button1.Click
Try
Me.SqlDataSourceArticulos.SelectParameters("codig
o").DefaultValue = Me.TextBox1.Text
Me.SqlDataSourceArticulos.DataSourceMode =
SqlDataSourceMode.DataReader
Dim datos As SqlDataReader
datos =
SqlDataSourceArticulos.Select(DataSourceSelectArg
uments.Empty)
If datos.Read ThenMe.TextBox2.Text =
datos("descripcion")
Me.TextBox3.Text =
datos("precio")
Me.DropDownList1.DataSource =
Me.SqlDataSource1Rubros
Me.DropDownList1.DataTextField =
"descripcion"
Me.DropDownList1.DataValueField =
"codigo"
Me.DropDownList1.SelectedValue =
datos("codigorubro")
Me.DropDownList1.DataBind()
Else
-
7/29/2019 ASP NET YA
49/104
Me.Label1.Text = "No existe un
artculo con dicho cdigo"
End If
Catch ex As Exception
Me.Label1.Text = ex.MessageEnd Try
End Sub
Protected Sub Button2_Click(ByVal sender As
Object, _
ByVal e As System.EventArgs)
Handles Button2.Click
Try
Me.SqlDataSourceArticulos.UpdateParameters("descripcion").DefaultValue = Me.TextBox2.Text
Me.SqlDataSourceArticulos.UpdateParameters("preci
o").DefaultValue = Me.TextBox3.Text
Me.SqlDataSourceArticulos.UpdateParameters("codig
orubro") _
.DefaultValue =
Me.DropDownList1.SelectedValue
Me.SqlDataSourceArticulos.UpdateParameters("codig
o") _
.DefaultValue = Me.TextBox1.Text
Dim cant As Integer
cant = Me.SqlDataSourceArticulos.Update
If cant = 1 Then
Me.Label2.Text = "Datos
modificados"
ElseMe.Label2.Text = "No existe un
artculo con dicho codigo"
End If
Me.SqlDataSourceArticulos.Update()
Catch ex As Exception
Me.Label2.Text = ex.Message
-
7/29/2019 ASP NET YA
50/104
End Try
End Sub
End Class
6 - Control GridView
El control GridView del ASP.Net permite visualizar datos en una tabla enpantalla, editar, modificar y borrar registros del mismo.El GridView es un control extremadamente flexible para mostrar tablasmulticolumna.Cada registro de una consulta del un select configurado en un SqlDataSourcegenera una fila en la grilla. Cada campo en el registro representa una columnaen 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 opcionesque nos brinda.Luego de crear el proyecto iremos al Explorador de servidores yseleccionaremos la tabla rubros y la arrastraremos al formulario web. Veremosque 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 lapropiedad 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 tambin que se han configurado automticamente las propiedadesInsertQuery, DeleteQuery y UpdateQuery con los valores:INSERT INTO [rubros] ([descripcion]) VALUES (@descripcion)
DELETE FROM [rubros] WHERE [codigo] = @codigo
UPDATE [rubros] SET [descripcion] = @descripcion WHERE [codigo] =
@codigoComo podemos ver hasta este momento la herramienta Visual Studio .Net nosha configurado en forma automtica el control SqlDataSource1, solo nos quedaconfigurar el control GridView1.Seleccionamos el control GridView y presionamos el botn presente en la partesuperior derecha, el mismo nos muestra una serie del funcionalidades bsicasdel control:
-
7/29/2019 ASP NET YA
51/104
Como podemos ver ya est configurado el origen de datos con el objetoSqlDataSource1.Habilitemos la paginacin, ordenamiento, edicin y eliminacin.Ejecutemos el proyecto y comprobaremos que tenemos en la pgina los datosde la tabla rubros con la capacidad de modificar y borrar registros. Ademsest activa la paginacin y ordenamiento por cualquiera de las dos columnas dela tabla.
Sin escribir una sola lnea de cdigo tenemos el mantenimiento de la tablarubros (con la excepcin del alta)Veamos otras caractersticas que podemos configurar en forma visual del controlGridView. Desde el botn > que se encuentra en la parte superior derecha delcontrol GridView1 podemos seleccionar la opcin Formato Automtico... paradefinir la presentacin de la tabla con plantillas predefinidas de color y fuente:
-
7/29/2019 ASP NET YA
52/104
Luego de seleccionar el esquema para el GridView, presionamos aceptar ytenemos 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:
Datos de varias tablas
Continuamos con las tablas:Tabla: articulos
codigo int Clave primaria e identidad.descripcion varchar(50)precio float
-
7/29/2019 ASP NET YA
53/104
codigorubro int
Tabla: rubroscodigo int Clave primaria e identidaddescripcion varchar(50
Generamos un nuevo webform y seleccionamos desde el Explorador de
servidores la tabla articulos y la disponemos dentro del webform. El entorno delVisual Studio .Net nos genera un objeto de la clase GridView y otro de la claseSqlDataSource.El objetivo final es mostrar el cdigo del artculo, su descripcin, su precio yfinalmente la descripcin del rubro (no el cdigo de rubro)1 - Primero seleccionamos el control SqlDataSource1 y configuramos lapropiedad SelectQuery con el comando Select que rescata los datos haciendo elemparejamiento por la columna codigorubro de la tabla articulos y codigo de latabla rubros:SELECT ar.codigo,
ar.descripcion as descriarticulo,precio,
ru.descripcion as descrirubrofrom articulos as arjoin rubros as ru on ru.codigo=ar.codigorubro
2 - Luego de configurar la propiedad SelectQuery debemos actualizar elesquema del SqlDataSource1, esto lo hacemos seleccionando el objeto sobre elformulario y seleccionamos la opcin Actualizar esquema. Con esto logramosque se refresque las columnas a mostrar en el GridView1.Si ejecutamos podemos ver que ya tenemos la tabla que rescata todos losartculos y asociado a cada artculo la descripcin del rubro al que pertenece:
Ahora configuraremos algunas propiedades para dar un formato y presentacinms adecuado de los datos:A Ya vimos que seleccionando el GridView1 y mediante la opcin Formatoautomtico... podemos definir el estilo de presentacin de la grilla.B Ahora entramos al la opcin Editar columnas... y seleccionamos el campoa configurar:
-
7/29/2019 ASP NET YA
54/104
Cambiemos los ttulos de las columnas de cada campo (por ejemplo en elcampo descriarticulo mostraremos el ttulo Descripcin del Art. Modificando lapropiedad 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 columnase muestra o no.D La propiedad DataFormatString nos permite configurar la apariencia denmeros y fechas. Por ejemplo si queremos que el precio aparezca con elsmbolo de moneda debemos configurar la propiedad DataFormatString con elvalor:{0:C}
-
7/29/2019 ASP NET YA
55/104
Algunos ejemplos de formato de campos:
Formato de filas individuales de acuerdo a ciertas condiciones.
Cuando se grafica la tabla podemos capturar el evento RowDataBound yconfigurar como graficar dicha fila de la tabla.A modo de ejemplo mostraremos de color amarillo las filas de los artculos conprecio superior a 5. Para esto codificamos el evento RowDataBound delGridView1:
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
precio = DataBinder.Eval(e.Row.DataItem,
"precio")
-
7/29/2019 ASP NET YA
56/104
If precio > 5 Then
e.Row.ForeColor =
System.Drawing.Color.Red
e.Row.BackColor =
System.Drawing.Color.Yellowe.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 (yaque 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 elprecio supera 5, en caso afirmativo modificamos el color de fondo (BackColor) yde frente de la fila.
Seleccin de una fila del GridView y posterior extraccin de susdatos.
En muchas situaciones es necesario que el usuario seleccione una fila de lagrilla para reflejar dicho dato en otra parte de la pgina o hacer otra consulta.Para poder implementar esta caracterstica del GridView llevaremos a cabo lossiguientes pasos:1 Cambiaremos el valor de la propiedad SelectedRowStyle.BackColor poramarillo (es decir que cuando seleccionemos la fila el color de fondo de la mismase activar con este valor)2 En el men de opciones que se despliega en la parte derecha del GridView1
-
7/29/2019 ASP NET YA
57/104
activaremos el CheckBox Habilitar seleccin3 Dispondremos una Label en el webform para mostrar el valor seleccionadode la grilla (solo a modo de ejemplo)4 Para el evento SelectedIndexChanged del GridView1 codificaremos elsiguiente cdigo:
Protected SubGridView1_SelectedIndexChanged(ByVal sender As
Object, _
ByVal e As System.EventArgs) Handles
GridView1.SelectedIndexChanged
Me.Label1.Text =
Me.GridView1.Rows(Me.GridView1.SelectedIndex).Cel
ls(1).Text
End Sub
El objeto Rows del GridView almacena una coleccin de filas, mediante el valordevuelto por la propiedad SelectedIndex de la grilla podemos acceder a la celdaque almacena el cdigo del artculo.
Esta informacin nos es muy til para mostrar informacin adicional sobre elregistro en otro control por ejemplo.
7 - Controles de validacin
Introduccin
Hay seis controles Web para la validacin de datos de entrada que se puedenincorporar en un Formulario Web.
-
7/29/2019 ASP NET YA
58/104
RequiredFieldValidator: Facilita la validacin de un dato del formulariochequeando que el mismo tenga algn valor.RangeValidator: Facilita la validacin de un dato del formulario contra un valormnimo 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 unasubrutina propia.RegularExpressionValidator: Facilita la validacin de un dato del formulariocontra una expresin.ValidationSumary: Agrupa los mensajes de error de otros controles en una partede la pgina.Todos los controles de validacin tienen tres propiedades fundamentales:ControlToValidate, Text y IsValid. Todos los controles derivan de la claseBaseValidator.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 muestreen la pgina.Por ltimo la propiedad IsValid almacena True en caso que el control pase el testde validacin.Cuando empleamos controles de validacin con el Explorer 4.0 o superior, loscontroles automticamente usan funciones en JavaScript en el cliente. Estosignifica que los controles pueden inmediatamente mostrar los mensajes deerror en el browser mientras el usuario est completando el formulario. Si hayalgn error en la pgina el cdigo JavaScript previene que el usuario puedaenviar los datos al servidor.En caso de emplear navegadores ms antiguos los controles que veremosseguirn funcionando, pero la validacin se realizar en el servidor.
Controles de validacin
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:
-
7/29/2019 ASP NET YA
59/104
El mensaje en rojo debe aparecer si presionamos el botn Confirmar y no seingres texto en el TextBox.En el Visual Studio .Net confeccionamos el formulario web disponiendo unocontrol de tipo TextBox, un Button y un RequiredFieldValidator que se encuentraen la pestaa Validacin del Cuadro de herramientas.
El control RequiredFieldValidator es importante inicializar las siguientespropiedades:
Cuando ejecutemos la pgina podemos ver el cdigo que llega al navegador (enella veremos las funciones en JavaScript que automticamente el ASP.NET noscrea para facilitar la validacin)El cdigo HTML completo de la pgina es el siguiente:
-
7/29/2019 ASP NET YA
60/104
Ingrese nombre de usuario:
Debe
ingresar el
nombre de usuario.
Como sabemos este cdigo HTML se genera en forma automtica cuandocreamos cada control y configuramos sus propiedades.Luego si queremos que al presionar el botn se redireccione a otra pgina encaso 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 ThenMe.Response.Redirect("Default2.aspx")
End If
End Sub
End Class
-
7/29/2019 ASP NET YA
61/104
La propiedad IsValid del WebForm almacena true si todos los controles devalidacin dispuestos en el formulario se validan correctamente. Es decir en esteproblemas si se ingresa algn caracter en el control TextBox luego se puedepasar a la pgina Default2.aspx.
Control: RangeValidator
El control RangeValidator especifica un valor mnimo y mximo para un controlTextBox. 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 deuna persona que se postula para un trabajo (la misma debe estar en el rango de18 a 35 aos)Disponemos sobre el formulario los siguientes objetos: Label, TextBox, Button yun RangeValidator. La interface que debemos implementar es la
siguiente:El objeto RangeValidator lo debemos configurar con los siguientes valores:
-
7/29/2019 ASP NET YA
62/104
Si ejecutamos la pgina veremos que el mensaje aparece si ingresamos unaedad 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 SubEnd Class
Es decir redireccionamos a la prxima pgina en caso que todos los controles devalidacin del formulario se verifiquen correctos (en este problema solo tenemosun control de tipo RangeValidator, pero en muchos casos veremos que en unformulario puede haber ms de un control de validacin)
-
7/29/2019 ASP NET YA
63/104
Si quisiramos solo validar un control determinado del WebForm la condicinsera: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 propiedad IsValid del webform odel RangeValidator el resultado ser idntico)
Control: CompareValidator
El control CompareValidator permite comparar un valor de un control con otrocontrol 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 lacomparacin.
Operator El operador a utilizarse en la comparacin (los valores posibles sonEqual, NotEqual, GreaterThan, GreaterThanEqual, LessThan, LessThanEqual yDataTypeCheck) 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 latabla usuarios (debe permitir el ingreso del nombre de usuario y su clave, estaltima 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 siguientemanera:
-
7/29/2019 ASP NET YA
64/104
Es importante inicializar la propiedad ControlToValidate con el objeto TextBoxque carga la segunda clave, luego que el operador carga la clave se procede avalidar si el texto ingresado coincide en el TextBox que hemos inicializado lapropiedad ControlToCompare.El cdigo a implementar al presionar el botn Confirmar:
Partial Class Default3Inherits 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 SubEnd Class
Control: CustomValidator
-
7/29/2019 ASP NET YA
65/104
El control CustomValidator permite validar el campo de un formulario con unafuncin de validacin propia. Debemos asociar nuestro control CustomValidatorcon un evento propio.Para probar este control implementaremos una pgina que solicite el ingreso deun nmero mltiplo de 5, en caso de ingresar un valor incorrecto mostraremos
un mensaje de error.La interface a implementar es la siguiente:
Primero configuramos las propiedades del objeto CustomValidator con:
Ahora debemos codificar el evento ServerValidate que tiene el objetoCustomValidator1, a esto lo hacemos desde la ventana de cdigo y lo podemosgenerar automticamente haciendo doble clic sobre el control en la ventana dediseo:
Protected Sub
CustomValidator1_ServerValidate(ByVal source As
Object, ByVal args As _
-
7/29/2019 ASP NET YA
66/104
System.Web.UI.WebControls.ServerValidateEventArgs
) Handles CustomValidator1.ServerValidate
Dim valor As Integer = args.ValueIf 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 valordel control que estamos validando y otra llamada IsValid que debemos asignarle
el resultado de nuestra validacin.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 valorTrue, en caso contrario, es decir que el nmero ingresado no sea un mltiplo de5 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 ThenMe.Response.Redirect("Default5.aspx")
End If
End Sub
Control: RegularExpressionValidator
El control RegularExpressionValidator permite validar el valor de un campo deun formulario con un patrn especfico, por ejemplo un cdigo postal, un nmerotelefnico, una direccin de mail, una URL etc.
El planteo de un RegularExpression es bastante compleja, pero el VisualStudio .Net provee una serie de expresiones regulares preconfiguradas.Para probar este control, haremos una pgina que solicite el ingreso de un mail ymostraremos un error en caso que el usuario ingrese un mail mal formado.La interface visual de la pgina es la siguiente:
-
7/29/2019 ASP NET YA
67/104
Al objeto de la clase RegularExpressionValidator le configuramos laspropiedades con los siguientes valores:
Si ejecutamos el programa podremos ver que al abandonar el foco del TextBoxaparecer 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
-
7/29/2019 ASP NET YA
68/104
Control: ValidationSummary
Cuando tenemos formularios con gran cantidad de controles puede llegar a serdificultoso ubicar los errores en la pgina. El Framework de la .Net trae otraclase llamada ValidationSumary que muestra todos los errores de la pgina
agrupados en una parte de pantalla. Para utilizar el control ValidationSummaryes necesario fijar el valor de la propiedad ErrorMessage para cada control devalidacin que tiene la pgina. Es importante no confundir la propiedad Text queaparece en la misma posicin donde la disponemos con la propiedadErrorMesage que contiene el mensaje de error que mostrar el controlValidationSummary.Para probar este control haremos una pgina que solicite la carga del nombre deusuario y su clave en forma obligatoria (mostrando un mensaje de error en casode 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 claseValidationSummary.La propiedad text de los objetos RequiredFieldValidator las inicializamos con un(*) asterisco y las propiedades ErrorMessage con las cadenas: Debe ingresar elnombre de usuario y Debe ingresar la clave respectivamente. En cuanto alobjeto de la clase ValidationSummary no debemos hacer ninguna configuracinespecifica, solo ubicarlo dentro de la pgina.
8 - Upload de archivos al servidor
Una actividad muy comn en un sitio web es el envo de archivos desde elcliente y su almacenamiento el el servidor.
Upload
Componente FileUpload
-
7/29/2019 ASP NET YA
69/104
La componente FileUpload encapsula el envo y recepcin de un archivo en elservidor web.Confeccionaremos una serie de pginas web para aprender a utilizar losmtodos 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 encuentraen la pestaa de componentes EstndarPara el evento clic de botn confirmar implementamos el siguiente cdigo:
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As
Object _
,ByVal e As System.EventArgs) Handles
Button1.Click
Me.FileUpload1.SaveAs(Server.MapPath(".") &
"\" & Me.FileUpload1.FileName)
Me.Label1.Text = "Archivo subido"
End SubEnd Class
El mtodo SaveAs permite grabar el archivo que se subi al servidor. Debemosindicarle 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 Servertiene el mtodo MapPath y para obtener el nombre del archivo la propiedadllamada FileName.Con esta nica lnea tenemos registrado en el servidor el archivo que se envidesde el navegador.
Almacenar el archivo en un subdirectorio.
Es una buena costumbre evitar almacenar los archivos que suben los usuariosen la misma carpeta donde se encuentran la pginas dinmicas ASPX.Para almacenar los archivos en otro directorio primero debemos crear eldirectorio (por ejemplo creemos una carpeta imgenes en el directo