ASP NET YA

download ASP NET YA

of 104

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