Guia 4
Guia 4
FACULTAD DE INGENIERIA
COORDINACION DE COMPUTACIÓN
GUIA DE LABORATORIO # 4
Nombre de la Práctica: Conectando a Fuentes de Datos
CICLO: 01/2020 Lugar de Ejecución: Centro de cómputo
Tiempo Estimado: 2 horas con 30 minutos
MATERIA: Lenguaje de Programación II.
Una Base de Datos es un fichero electrónico (o conjunto de ficheros) que permite almacenar
información de manera estructurada.
Una Base de Datos Relacional es un modelo de base de datos que almacena la información en Tablas.
Cada Tabla, almacena un conjunto específico de datos estructurados. Una tabla contiene una colección
de filas (tuplas o registros) y columnas (campos o atributos).
Cada Columna de la tabla posee un nombre, y un Tipo de Dato, que define la información que podrá
almacenar. Por ejemplo: fechas, nombres, importes en moneda o números.
Las Tablas poseen además, restricciones como ser la “Clave Primaria”, que asegura la unicidad delos
datos en la tabla; además de relaciones o claves foráneas con otras tablas, implementando integridad
referencial.
ADO.NET
ADO.NET es un conjunto de componentes del software que pueden ser usados por los programadores para
acceder a datos y a servicios de datos. Es una parte de la biblioteca de clases base que están incluidas en el
Microsoft .NETFramework. Es comúnmente usado por los programadores para acceder y para modificar los
datos almacenados en unSistema Gestor de Bases de Datos Relacionales, aunque también puede ser usado para
acceder a datos en fuentes no relacionales. ADO.NET es a veces considerado como una evolución de la tecnología
ActiveX Data Objects (ADO), pero fue cambiado tan extensivamente que puede ser concebido como un producto
enteramente nuevo. ADO.NET consiste en dos partes primarias:
Data provider: estas clases proporcionan el acceso a una fuente de datos, como Microsoft SQL Server y Oracle.
Cada fuente de datos tiene su propio conjunto de objetos del proveedor, pero cada uno tienen un conjunto
común de clases de utilidad:
Connection: Proporciona una conexión usada para comunicarse con la fuente de datos. También actúa
como Abstract Factory para los objetos command.
Command: Usado para realizar alguna acción en la fuente de datos, como lectura, actualización,
oborrado de datos relacionales.
Parameter: Describe un simple parámetro para un command. Un ejemplo común es un parámetro
para ser usado en un procedimiento almacenado.
DataAdapter: "Puente" utilizado para transferir data entre una fuente de datos y un objeto DataSet
(ver abajo).
DataReader: Es una clase usada para procesar eficientemente una lista grande de resultados, un
registro a la vez.
Un objeto DataSet representa un esquema (o una base de datos entera o un subconjunto de una).
Puede contener las tablas y las relaciones entre esas tablas.
o Un objeto DataTable representa una sola tabla en la base de datos. Tiene un nombre, filas, y
columnas.
▪ Un objeto DataView "se sienta sobre" un DataTable y ordena los datos (como una
cláusula "order by" de SQL) y, si se activa un filtro, filtra los registros (como una
cláusula "where" del SQL). Para facilitar estas operaciones se usa un índice en memoria.
Todas las DataTables tienen un filtro por defecto, mientras que pueden ser definidos
cualquier número de DataViews adicionales, reduciendo la interacción con la base de
datos subyacente y mejorando así el desempeño.
• Un DataColumn representa una columna de la tabla, incluyendo su nombre y
tipo.
• Un objeto DataRow representa una sola fila en la tabla, y permite leer y
actualizar los valores en esa fila, así como la recuperación de cualquier fila que
esté relacionada con ella a través de una relación de clave primaria - clave
extranjera.
• Un DataRowView representa una sola fila de un DataView, la diferencia entre
un DataRow y el DataRowView es importante cuando se está interactuando
sobre un resultset.
Un DataRelation es una relación entre las tablas, tales como una relación de clave primaria - clave
ajena. Esto es útil para permitir la funcionalidad del DataRow de recuperar filas relacionadas.
Un Constraint describe una propiedad de la base de datos que se debe cumplir, como que los valores
en una columna de clave primaria deben ser únicos. A medida que los datos son modificados
cualquier violación que se presente causará excepciones.
Un DataSet es llenado desde una base de datos por un DataAdapter cuyas propiedades Connection y Command
que han sido iniciados. Sin embargo, un DataSet puede guardar su contenido a XML (opcionalmente con un
esquema XSD), o llenarse a sí mismo desde un XML, haciendo esto excepcionalmente útil para los servicios web,
computación distribuida, y aplicaciones ocasionalmente conectadas desconectados.
Desventajas
Los datos no están sincronizados
Resolución manual de conflictos
System.Data
ADO .NET ofrece un modelo unificado de desarrollo a lo largo de la Plataforma .NET, independiente al lenguaje
de Programación (Visual Basic .NET, C#, etc.) e independiente a la arquitectura de la aplicación a desarrollar
(aplicación de escritorio, aplicación web, aplicación de consola, etc.).
Clase DataSet
El DataSet de ADO.NET es el componente central de la arquitectura sin conexión de ADO.NET. El
DataSet está expresamente diseñado para el acceso a datos independientemente del origen de datos.
Como resultado, se puede utilizar con múltiples y distintos orígenes de datos, con datos XML o para
administrar datos locales de la aplicación. El DataSet contiene una colección de uno o más objetos
DataTable formados por filas y columnas de datos, así como información sobre claves principales, claves
externas, restricciones y relaciones relativas a los datos incluidos en los objetos DataTable.
Clase SQLAdapter
• Representa un conjunto de
Commands y una Connection
• Puente entre el DataSet y la BD
• Lee y actualiza la BD:
SelectCommand,
UpdateCommand,
InsertCommand
DeleteCommand
Clase DataTable
Representa una tabla en memoria
Lo rellena un DataAdapter o a mano
Componente principal de los objetos DataSet y DataView
Clase DataView
Vista personalizada de un objeto DataTable
Filtros, ordenación, búsquedas
DataRelation
Define relaciones entre tablas
Utiliza columnas de un DataTable
Tipo de
Utilizar control Descripción
validación
Entrada RequiredFieldValidator Garantiza que el usuario no omite una entrada.
requerida.
Comparación CompareValidator Compara los datos proporcionados por el usuario con un
con un valor valor constante, con el valor de otro control (mediante un
operador de comparación como menor que, igual que o
mayor que) o para un tipo de datos específico.
Comprobación RangeValidator Comprueba que una entrada de usuario está entre los límites
del intervalo superior e inferior especificados. Se pueden comprobar los
intervalos entre pares de números, caracteres
alfabéticos y fechas.
Coincidencia RegularExpressionValidator Comprueba que la entrada del usuario coincide con un
de modelos modelo definido por una expresión regular. Este tipo de
validación permite comprobar secuencias de caracteres
predecibles, como los que aparecen en las direcciones de
correo electrónico, números de teléfono, códigos postales,
etc.
Definida por CustomValidator Comprueba la entrada de usuario utilizando la validación
el usuario lógica que ha escrito. Este tipo de validación permite
comprobar valores derivados en tiempo de ejecución.
En un formulario se pueden asociar más de un control de validación a un control. Por ejemplo, se podría
especificar que se requiera un control y que además contenga un intervalo de valores específico.
Existe un control relacionado, ValidationSummary, que no realiza ningún tipo de validación pero suele utilizarse
con otros controles de validación para mostrar los mensajes de error de todos los controles de validación de la
página juntos.
Sin embargo, si creas una nueva aplicación web vacía con Visual Studio 2012 o posterior y añades un control de
validación a alguna página, cuando ejecutes la aplicación verás esta página de error al intentar hacer cualquier
validación:
IV. PROCEDIMIENTO
Ejercicio #1 – Creación de base de datos usando SQL Server 2012 para que funcione como fuente de datos.
3. Entre los recursos proporcionado para esta guía, ubique el script ( guia8.sql ) y de doble clic sobre este
archivo. Luego, presione el botón “! Execute” y espere hasta que en el inferior muestre la confirmación
de consulta ejecutada exitosamente.
De clic secundario sobre la carpeta Databases del Explorer del Gestor SQL y seleccione opción Refresh.
Confirme que se ha creado la base de datos “Bolsa_Trabajo”.
4. Expanda la base datos “Bolsa Trabajo”, de clic derecho sobre subcarpeta Database Diagrams y seleccione
opción New Database Diagram. Confirme en la ventana siguiente y agregue a c/u de las tablas.
Proceda a verificar mediante este diagrama a las relaciones entre las tablas, las cuales deben verse como
se muestra a continuación:
5. Inicia Microsoft Visual Studio y crea un nuevo Sitio Web vacio, denominado SitioWebdeSUCARNET.
Procederemos a configurar las condiciones de trabajo del mismo mediante la creación de carpetas y
archivos.
Para ello cree 4 carpetas en la raíz del sitio según el detalle de la siguiente tabla.
6. Procederemos a crear la conexión de tal manera que esta se encuentre activa desde nuestra ventana. De
esta manera se podrá administrar los objetos de bases de datos desde el IDE.
Configuremos la cadena de conexión en nuestro archivo web.config, ya que de esta manera se podrá
mantener una sola cadena de conexión en todo el sitio. Edita el archivo web.config agregando las
siguientes líneas de código (observa el recuadro resaltado en la imagen a continuacion):
7. Siempre en el archivo web.config procederemos agregar las siguientes líneas de código, que
necesitaran nuestros controles de validación ASP, ya que si no las encuentra en la aplicación nos dará
error por no deshabilitar la validación no-intrusiva para toda la aplicación. Para conseguirlo tenemos
que agregar una línea a nuestro archivo de configuración web.config, colocándola en el
nodo appsettings, así:
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>
Ejercicio #3 – Default.aspx
8. Ahora, proceda a agregar un nuevo Web Form con nombre “Default.aspx”, y luego digite el siguiente
marcado.
<!DOCTYPE HTML>
<html>
<head>
<title>Bolsa de Trabajo en Línea - Universidad Don Bosco</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<!--[if lte IE 8]><script src="css/ie/html5shiv.js"></script><![endif]-->
<script src="js/jquery.min.js"></script>
<script src="js/jquery.scrolly.min.js"></script>
<script src="js/jquery.dropotron.min.js"></script>
<script src="js/jquery.scrollex.min.js"></script>
<script src="js/skel.min.js"></script>
<script src="js/skel-layers.min.js"></script>
<script src="js/init.js"></script>
<noscript>
<link rel="stylesheet" href="css/skel.css" />
<link rel="stylesheet" href="css/style.css" />
<link rel="stylesheet" href="css/style-xlarge.css" />
</noscript>
<!--[if lte IE 9]><link rel="stylesheet" href="css/ie/v9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="css/ie/v8.css" /><![endif]-->
</head>
<body>
<!-- Header -->
<header id="header" class="skel-layers-fixed">
<h1 id="logo"><a href="/">Página Principal</a></h1>
<nav id="nav">
<ul>
<li><a href="NuevaOferta.aspx" class="button
special">Nueva Oferta</a></li>
Lenguaje de Programación II. 11
Guía #4: Conectando a Fuentes de Datos
</ul>
</nav>
</header>
<!-- Main -->
<div id="main" class="wrapper style1">
<div class="container">
<header class="major">
<h2>Bolsa de Trabajo en Línea</h2>
<p>Universidad Don Bosco</p>
</header>
<!-- Formulario de Ingreso de Información -->
<section>
<form id="form1" runat="server">
<div class="row uniform 50%">
</div>
</form>
</section>
</div>
</div>
<!-- Footer -->
<footer id="footer">
<ul class="icons">
<li><a href="#" class="icon alt fa-twitter"><span
class="label">Twitter</span></a></li>
<li><a href="#" class="icon alt fa-facebook"><span
class="label">Facebook</span></a></li>
<li><a href="#" class="icon alt fa-envelope"><span
class="label">Email</span></a></li>
</ul>
<ul class="copyright">
<li>© 2015. All rights reserved.</li>
</ul>
</footer>
</body>
</html>
9. Dentro del marcado anterior, ubique el div que tiene como clase “row uniform 50%” ya que es al interior
de este div que colocaremos el contenido de la página. Dentro de este div procederemos a crear 3
DropDownList, un botón y un GridView, por lo que digite el siguiente marcado dentro de este div.
<asp:DropDownList
ID="ddlEmpresas" runat="server">
</asp:DropDownList>
</div>
</div>
<div class="2u 12u$(xsmall)">
<br />
<asp:Button ID="btnBuscar" runat="server"
Text="Buscar" Width="100%" CssClass="special"
OnClick="btnBuscar_Click" />
</div>
<asp:GridView ID="GridView1" runat="server"></asp:GridView>
10. Ahora, procederemos a configurar el GridView. En la barra inferior del área de trabajo, seleccione botón
Diseño. Ubique el control GridView1 y de clic en su botón de opciones.
11. Seleccione la opción de “Editar Columnas”, procederemos ahora a agregar una columna, para ello,
siempre en el editor de columnas, seleccione dentro del nodo “CommandField” a la opción de
“Seleccionar” y de clic en el botón de agregar.
Configura la nueva columna estableciendo a la propiedad “Header Text” el valor de “Editar”, como
“Button Type” seleccione “Image”, en la propiedad “SelectImageUrl” busque imagen
“edit_flat_icon.png” dentro de la carpeta “images”. Y dentro de la sección de estilos, despligue el nodo
“Control Style” y coloque un Width de 50px. De clic en Aceptar.
12. Procederemos ahora a agregar una nueva columna al GridView1, para ello, siempre en el editor de
columnas, agregue un nuevo CommandField de tipo Eliminar. Configure las siguientes propiedades:
• Nombre de columna “Header Text” con valor de “Eliminar”
• “Button Type” seleccione “Image”
• “DeleteImageUrl” busque “eliminar_icon_flat.png” dentro de la carpeta “images”.
• Dentro de la sección de estilos, despligue el nodo “Control Style” y coloque un Width de 40px.
De clic en Aceptar.
13. Ahora, procederemos a establecer dentro del GridView1 a su propiedad DataKeyNames, que es de
suma importancia, porque establece que el valor que devolverá por cada operación sea la llave de la
tabla.
Ubíquese en la vista de código dentro de la página Default.aspx y localice a la etiqueta de GridView1.
Dentro de su etiqueta, agregue a la propiedad “DataKeyNames” y asígne el valor de “Id Oferta”
14. Una vez concluido esto, nos resta programar los controles de DropDownList. Para ello, cree una nueva
clase con el nombre de “conexion.cs”, y digite el siguiente código. Tome especial cuidado de que se han
incluido los espacios de nombres orientados a datos como System.Data.SQLClient.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
//--------------Namespace para trabajar con SQLServer--------------
using System.Data.SqlClient;
//------------------------------------------------------------------
using System.Configuration;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
namespace WebApplication3
{
public class conexion
{
private String cadenaConexion;
private SqlConnection conexionSQL;
private DataSet principal;
private SqlDataAdapter adaptador;
public conexion()
{
//Extrae las credenciales del webconfig
this.cadenaConexion =
ConfigurationManager.ConnectionStrings["CadenaConexion"].ConnectionString;
principal = new DataSet();
adaptador = new SqlDataAdapter();
}
//Función para realizar conexion a base de datos SQLserver
public bool conectar()
{
try
{
//crea objeto SQLConnection y enviar como paramentros las credenciales de
conexion
this.conexionSQL = new SqlConnection(this.cadenaConexion);
//abre la conexion a la base de datos SQLServer
this.conexionSQL.Open();
//inicializamos el parametro selectcommand del dataAdapter
adaptador.SelectCommand = new SqlCommand("SELECT * FROM ofertas", conexionSQL);
return true;
}
catch (Exception e)
Lenguaje de Programación II. 15
Guía #4: Conectando a Fuentes de Datos
{
return false;
}
}
//Metodo que verifica si el estado de la conexion es abierta o cerrada en la
aplicación.
public bool estadoConexion()
{
switch (this.conexionSQL.State)
{
case System.Data.ConnectionState.Broken:
return true;
case System.Data.ConnectionState.Open:
return true;
default:
return false;
}
}
public void desconectar()
{
//Cierra la conexion a la base de datos
this.conexionSQL.Close();
}
principales[0] = actual.Columns[primaryKey];
actual.PrimaryKey = principales;
}
}
//modo conectado: Metodo que muestra datos de una oferta en controles de EditarOferta.aspx
public void mostraroferta(int idOferta, ref DropDownList empresa, ref TextBox salario,
ref
TextBox toferta, ref DropDownList tcontrato,
ref DropDownList tjornada, ref DropDownList localidad, ref DropDownList tlocalidad, ref
DropDownList categoria, ref TextBox fecha,
ref TextBox vacantes, ref TextBox descripcion)
{
//objetos comando
SqlCommand comando = new SqlCommand();//tabla oferta
SqlCommand comando2 = new SqlCommand();//tabla empresa
SqlCommand comando3 = new SqlCommand();//tabla municipio
SqlCommand comando4 = new SqlCommand();//tabla categorias
SqlDataReader lector, lectorempresa, lectorlocalidad, lectorcategoria;
string idEmp = "", idlocalidad = "", idcategoria = "";
comando.CommandType = System.Data.CommandType.Text;
comando.CommandText = "select * from ofertas where nIdOferta=" + idOferta;
comando.Connection = this.conexionSQL;
try
{
//extra datos de la tabla Ofertas a controles asp y variables string.
lector = comando.ExecuteReader();
if (lector.HasRows)
{
while (lector.Read())
{
idlocalidad = lector["nIdLocalidad"].ToString();
idEmp = lector["nIdEmpresa"].ToString();
salario.Text = lector["fSalario"].ToString();
toferta.Text = lector["sTituloOferta"].ToString();
tcontrato.SelectedValue = (lector["nTipoContrato"].ToString());
tjornada.SelectedValue = (lector["nTipoJornada"].ToString());
tlocalidad.SelectedValue = (lector["nTipoLocalidad"].ToString());
idcategoria = lector["nIdCategoria"].ToString();
fecha.Text = lector["dFechaPublicacion"].ToString();
vacantes.Text = lector["nVacantes"].ToString();
descripcion.Text = lector["sDescripcion"].ToString();
}
lector.Close();
}
//Seleccion la opcion de empresa almacenada en base de datos en control
ddlempresa.
comando2.CommandType = System.Data.CommandType.Text;
comando2.CommandText = "select sNombreEmpresa from empresas where nIdEmpresa =
" + idEmp;
Lenguaje de Programación II. 17
Guía #4: Conectando a Fuentes de Datos
comando2.Connection = this.conexionSQL;
lectorempresa = comando2.ExecuteReader();
if (lectorempresa.HasRows)
{
while (lectorempresa.Read())
{
empresa.SelectedValue =
empresa.Items.FindByText(lectorempresa["sNombreEmpresa"].ToString()).Value;
}
}
lectorempresa.Close();
//Seleccion la opcion de municipio almacenada en base de datos en control
ddlmunicipio.
comando3.CommandType = System.Data.CommandType.Text;
comando3.CommandText = "select sNombreMunicipio from municipios where
nIdMunicipio = " + idlocalidad;
comando3.Connection = this.conexionSQL;
lectorlocalidad = comando3.ExecuteReader();
if (lectorlocalidad.HasRows)
{
while (lectorlocalidad.Read())
{
localidad.SelectedValue =
localidad.Items.FindByText(lectorlocalidad["sNombreMunicipio"].ToString()).Value;
}
}
lectorlocalidad.Close();
//Seleccion la opcion de categorias almacenada en base de datos en control
ddlcategorias.
comando4.CommandType = System.Data.CommandType.Text;
comando4.CommandText = "select sNombreCategoria from categorias where
nIdCategoria = " + idcategoria;
comando4.Connection = this.conexionSQL;
lectorcategoria = comando4.ExecuteReader();
if (lectorcategoria.HasRows)
{
while (lectorcategoria.Read())
{
categoria.SelectedValue =
categoria.Items.FindByText(lectorcategoria["sNombreCategoria"].ToString()).Value;
}
}
lectorcategoria.Close();
}
catch (SqlException error)
{
}
}
//modo conectado: Metodo que inserta nueva oferta a base de datos.
public int nuevaOferta(int nIdEmpresa, String sTituloOferta, int nTipoJornada, int
nTipoContrato,
double fSalario, int nIdLocalidad, int nTipoLocalidad, int nIdCategoria, String
fechaPublicacion,
String sDescripcion, String fechaContratacion, int nVacantes)
{
//Consulta Insert SQL a tabla ofertas
String queryInsert = "INSERT INTO ofertas(nIdEmpresa, sTituloOferta,
nTipoJornada,nTipoContrato, fSalario, " +
Lenguaje de Programación II. 18
Guía #4: Conectando a Fuentes de Datos
fila2Update = tala.Rows.Find(idOferta);
fila2Update[1] = nIdEmpresa;
fila2Update[2] = sTituloOferta;
fila2Update[3] = nTipoJornada;
fila2Update[4] = nTipoContrato;
fila2Update[5] = fSalario;
fila2Update[6] = nIdLocalidad;
fila2Update[7] = nTipoLocalidad;
fila2Update[8] = nIdCategoria;
fila2Update[10] = sDescripcion;
fila2Update[11] = fechaContratacion;
fila2Update[12] = nVacantesa;
if (principal.HasChanges())
{
SqlCommandBuilder comando = new SqlCommandBuilder(adaptador);
int filasAfectadas = adaptador.Update(principal, "ofertas");
principal.AcceptChanges();
return filasAfectadas;
}
Lenguaje de Programación II. 19
Guía #4: Conectando a Fuentes de Datos
return 0;
}
}
}
public void CargarDatos(GridView dg, int categoria = 1, int municipio = 1, int empresa = 1)
{
string SQL;
//crea un DataTable para almacenar todos los registros de la consulta SQL.
DataTable t = new DataTable();
//Realiza consulta a varias tablas de base datos Bolsa de Trabajo.
SQL = "SELECT categorias.sNombreCategoria, ofertas.nIdOferta,
ofertas.sTituloOferta, " +
"nTipoContrato = CASE ofertas.nTipoContrato WHEN 1 THEN 'Permanente' WHEN 2
THEN 'Por proyecto' END, " +
"nTipoJornada = CASE ofertas.nTipoJornada WHEN 1 THEN 'Tiempo Completo'
WHEN 2THEN 'Por horas' END, " +
"ofertas.fSalario, ofertas.dFechaPublicacion,
empresas.sNombreEmpresa,municipios.sNombreMunicipio " +
"FROM municipios INNER JOIN ofertas ON municipios.nIdMunicipio
=ofertas.nIdLocalidad " +
"INNER JOIN empresas ON ofertas.nIdEmpresa = empresas.nIdEmpresa " +
"INNER JOIN categorias ON ofertas.nIdCategoria = categorias.nIdCategoria "
+
"WHERE categorias.nIdCategoria = @nIdCategoria AND municipios.nIdMunicipio
= @nIdMunicipio " +
"AND empresas.nIdEmpresa = @nIdEmpresa";
SqlCommand comando = new SqlCommand(SQL, conexionSQL);
//asigna los valores a los parametros utilizados en la consulta.
comando.Parameters.Clear();
comando.Parameters.AddWithValue("@nIdCategoria", categoria);
comando.Parameters.AddWithValue("@nIdMunicipio", municipio);
comando.Parameters.AddWithValue("@nIdEmpresa", empresa);
//Se almacena los datos de la tabla Ofertas en el DataTable
SqlDataAdapter dataAdaptador = new SqlDataAdapter(comando);
dataAdaptador.Fill(t);
//Se modifican los nombres de la columna del DataTable
t.Columns["sNombreCategoria"].ColumnName = "Nombre Categoria";
Lenguaje de Programación II. 20
Guía #4: Conectando a Fuentes de Datos
16. Ahora, proceda a programar el evento load de esta página agregando el siguiente código.
conexionSQL.desconectar();
}
17. Ahora, proceda a programar el evento clic del botón de buscar agregando el siguiente código.
18. De manera similar, proceda a crear los siguientes métodos de evento del control GridView1. Estos nos
servirán para gestionar la selección y eliminación de registros desde este GridView.
19. Ahora, procederemos a enlazar los dos eventos anteriores a las acciones del grid. Para ello agregue las
siguientes propiedades al marcado del GridView1.
Una vez hecho esto, proceda a ejecutar la página y filtre los datos con respecto a los que se almacenan
en la base de datos, seleccionando diferentes opciones de los 3 combos y presionando botón Buscar.
Cuando existan ofertas registradas que coincidan en los 3 criterios, se mostraran en la grilla
GridView1.
Ejercicio #4 – NuevaOferta.aspx
20. Cree un nuevo Web Form con el nombre de “NuevaOferta.aspx” y proceda a digitar el siguiente
marcado:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="NuevaOferta.aspx.cs"
Inherits="WebApplication3.NuevaOferta" %>
<!DOCTYPE HTML>
<html>
<head>
<title>Bolsa de Trabajo en Línea - Universidad Don Bosco</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<!--[if lte IE 8]><script src="css/ie/html5shiv.js"></script><![endif]-->
<script src="js/jquery.min.js"></script>
<script src="js/jquery.scrolly.min.js"></script>
<script src="js/jquery.dropotron.min.js"></script>
<script src="js/jquery.scrollex.min.js"></script>
<script src="js/skel.min.js"></script>
<script src="js/skel-layers.min.js"></script>
<script src="js/init.js"></script>
<noscript>
<link rel="stylesheet" href="css/skel.css" />
<link rel="stylesheet" href="css/style.css" />
<link rel="stylesheet" href="css/style-xlarge.css" />
</noscript>
Lenguaje de Programación II. 22
Guía #4: Conectando a Fuentes de Datos
<asp:ListItem Value="1">Tiempo
Completo</asp:ListItem>
<asp:ListItem Value="2">Por
Horas</asp:ListItem>
</asp:DropDownList>
</div>
</div>
<div class="6u 12u$(xsmall)">
<label>Salario</label>
<asp:TextBox ID="txtSalario"
runat="server"></asp:TextBox>
<asp:RequiredFieldValidator
ID="RequiredFieldValidator2" ControlToValidate="txtSalario"
ForeColor="Red" runat="server"
ErrorMessage="Salario
obligatorio">*</asp:RequiredFieldValidator>
</div>
<div class="6u$ 12u$(xsmall)">
<label>Localidades</label>
<div class="select-wrapper">
<asp:DropDownList
ID="ddlLocalidades" runat="server">
</asp:DropDownList>
</div>
</div>
<div class="6u 12u$(xsmall)">
<label>Tipo de Localidad</label>
<div class="select-wrapper">
<asp:DropDownList ID="ddlTipoLocalidad"
runat="server">
<asp:ListItem Value="1">Área</asp:ListItem>
<asp:ListItem
Value="2">Proximidad</asp:ListItem>
</asp:DropDownList>
</div>
</div>
<div class="6u 12u$(xsmall)">
<label>Categoría</label>
<div class="select-wrapper">
<asp:DropDownList
ID="ddlCategorias" runat="server">
</asp:DropDownList>
</div>
</div>
<div class="6u 12u$(xsmall)">
<label>Fecha Contratación</label>
<asp:TextBox ID="txtFechaContratacion"
runat="server"></asp:TextBox>
<asp:RequiredFieldValidator
ID="RequiredFieldValidator3"
ControlToValidate="txtFechaContratacion" ForeColor="Red"
runat="server" ErrorMessage="Fecha de contratación
obligatorio">*</asp:RequiredFieldValidator>
</div>
<div class="6u 12u$(xsmall)">
<label>Vacantes</label>
<asp:TextBox ID="txtVacantes"
runat="server"></asp:TextBox>
<asp:RequiredFieldValidator
ID="RequiredFieldValidator4" ControlToValidate="txtVacantes"
ForeColor="Red" runat="server"
Lenguaje de Programación II. 24
Guía #4: Conectando a Fuentes de Datos
ErrorMessage="Vacantes es campo
obligatorio">*</asp:RequiredFieldValidator>
</div>
<div class="6u$ 12u$(xsmall)">
<label>Descripción de la plaza</label>
<asp:TextBox ID="txtDescripcion"
TextMode="MultiLine" Columns="10" runat="server"></asp:TextBox>
</div>
<div class="6u 12u$(xsmall)">
<asp:Button ID="btnBuscar" runat="server"
Text="Agregar Nueva Oferta" CssClass="special"
OnClick="btnBuscar_Click" />
</div>
<div class="12u 12u$(xsmall)">
<asp:ValidationSummary ID="ValidationSummary1"
DisplayMode="BulletList" runat="server" />
</div>
</div>
</form>
</section>
</div>
</div>
<!-- Footer -->
<footer id="footer">
<ul class="icons">
<li><a href="#" class="icon alt fa-twitter"><span
class="label">Twitter</span></a></li>
<li><a href="#" class="icon alt fa-facebook"><span
class="label">Facebook</span></a></li>
<li><a href="#" class="icon alt fa-envelope"><span
class="label">Email</span></a></li>
</ul>
<ul class="copyright">
<li>© 2015. All rights reserved.</li>
</ul>
</footer>
</body>
</html>
21. Ahora, proceda a programar el evento load de la página NuevaOferta.aspx.cs, agregando el siguiente
código.
Ejercicio #5 – EditarOferta.aspx
23. Cree un nuevo Web Form con el nombre de “EditarOferta.aspx” y proceda a digitar el siguiente
marcado:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="EditarOferta.aspx.cs"
Inherits="WebApplication3.EditarOferta" %>
<!DOCTYPE html>
<html>
<head>
<title>Bolsa de Trabajo en Línea - Universidad Don Bosco</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<!--[if lte IE 8]><script src="css/ie/html5shiv.js"></script><![endif]-->
<script src="js/jquery.min.js"></script>
<script src="js/jquery.scrolly.min.js"></script>
<script src="js/jquery.dropotron.min.js"></script>
<script src="js/jquery.scrollex.min.js"></script>
<script src="js/skel.min.js"></script>
<script src="js/skel-layers.min.js"></script>
<script src="js/init.js"></script>
<noscript>
<link rel="stylesheet" href="css/skel.css" />
<link rel="stylesheet" href="css/style.css" />
<link rel="stylesheet" href="css/style-xlarge.css" />
</noscript>
<!--[if lte IE 9]><link rel="stylesheet" href="css/ie/v9.css" /><![endif]-->
<!--[if lte IE 8]><link rel="stylesheet" href="css/ie/v8.css" /><![endif]-->
</head>
<body>
<!-- Header -->
Lenguaje de Programación II. 26
Guía #4: Conectando a Fuentes de Datos
</div>
</div>
<div class="6u 12u$(xsmall)">
<label>Salario</label>
<asp:TextBox ID="txtSalario"
runat="server"></asp:TextBox>
<asp:RequiredFieldValidator
ID="RequiredFieldValidator2" ControlToValidate="txtSalario"
ForeColor="Red"
runat="server" ErrorMessage="Salario
obligatorio">*</asp:RequiredFieldValidator>
</div>
<div class="6u$ 12u$(xsmall)">
<label>Localidades</label>
<div class="select-wrapper">
<asp:DropDownList
ID="ddlLocalidades" runat="server">
</asp:DropDownList>
</div>
</div>
<div class="6u 12u$(xsmall)">
<label>Tipo de Localidad</label>
<div class="select-wrapper">
<asp:DropDownList ID="ddlTipoLocalidad" runat="server">
<asp:ListItem
Value="1">Área</asp:ListItem>
<asp:ListItem
Value="2">Proximidad</asp:ListItem>
</asp:DropDownList>
</div>
</div>
<div class="6u 12u$(xsmall)">
<label>Categoría</label>
<div class="select-wrapper">
<asp:DropDownList
ID="ddlCategorias" runat="server">
</asp:DropDownList>
</div>
</div>
<div class="6u 12u$(xsmall)">
<label>Fecha Contratación</label>
<asp:TextBox ID="txtFechaContratacion"
runat="server"></asp:TextBox>
<asp:RequiredFieldValidator
ID="RequiredFieldValidator3"
ControlToValidate="txtFechaContratacion" ForeColor="Red"
runat="server" ErrorMessage="Fecha de contratación
obligatorio">*</asp:RequiredFieldValidator>
</div>
<div class="6u 12u$(xsmall)">
<label>Vacantes</label>
<asp:TextBox ID="txtVacantes"
runat="server"></asp:TextBox>
<asp:RequiredFieldValidator
ID="RequiredFieldValidator4" ControlToValidate="txtVacantes"
ForeColor="Red"
runat="server" ErrorMessage="Vacantes es campo
obligatorio">*</asp:RequiredFieldValidator>
</div>
<div class="6u$ 12u$(xsmall)">
<label>Descripción de la plaza</label>
Lenguaje de Programación II. 28
Guía #4: Conectando a Fuentes de Datos
<asp:TextBox ID="txtDescripcion"
TextMode="MultiLine" Columns="10" runat="server"
TextChanged="eventhandler"></asp:TextBox>
</div>
24. Ingrese al archivo EditarOferta.aspx.cs, y luego a nivel de la clase EditarOferta, declaremos de forma
global el objeto conexión, asi:
conexion conexionSQL = new conexion();
25. Ahora, proceda a programar el evento load de la página EditarOferta.aspx.cs, agregando el siguiente
código:
27. Proceda a ejecutar y recargar nuevamente la página desde el IDE de Visual Studio. Una vez cargada la
página procede a realizar las pruebas necesarias.
V. DISCUSION DE RESULTADOS
VI. BIBLIOGRAFÍA
1. Thierry GROUSSARD. (2013). C# 5: Los fundamentos del lenguaje – Desarrollar con Visual Studio 2012 .
Barcelona: ENI.