Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Rubén Sanabria
Visual Studio hace todo lo posible para validar de antemano las secuencias HTML que figuran en una página
ASPX. Se generan mensajes de advertencia para llamar la atención del desarrollador acerca de las no
conformidades.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<h3>Dias de la semana</h3><br />
<div>
<ul>
<%
int i;
string[] dias = { "lunes", "martes", "miércoles", "jueves",
"viernes", "sábado", "domingo" };
for (i = 0; i < dias.Length; i++)
{
%>
<li><%= dias[i] %></li>
<% } %>
</ul>
</div>
</form>
</body>
</html>
OPTATIVO IV 1
Ing. Rubén Sanabria
Los scriptlets
Los scriptlets son fragmentos de código que figuran en una página ASPX. Están delimitados por
marcadores, que los distinguen de las secuencias HTML. ASP.NET cuenta con cuatro tipos de
scriptlets: Los bloques de instrucciones Estos bloques de instrucciones se ejecutan durante la
visualización de la página. Pueden influir en la fabricación de secuencias HTML, tal y como muestra
el siguiente ejemplo de código anidado:
- Se generarán exactamente 7 etiquetas
- tantas como iteraciones del bucle for.
<%= %>
Las expresiones que figuran entre se evalúan sistemáticamente en el contexto de ejecución. Puede
tratarse de valores literales, de variables o de llamadas a métodos.
Las expresiones anidadas Desde un punto de vista sintáctico, podemos considerar las expresiones
anidadas como una variación de las expresiones sistemáticas . Ciertos controles, tales como las listas
o las tablas de datos, iteran sobre registros con datos. El origen de los datos se enlaza a estos
componentes mediante su propiedad DataSource y, a continuación, se invoca el método DataBind().
Esto establece el orden de resolución de las expresiones que hacen referencia a las columnas del
origen de datos:
El estudio de los controles de datos y de los controles basados en un modelo detalla esta sintaxis,
algo compleja.
Las $-expressions <%$ %>
Las expresiones ligadas son útiles a la hora de acceder a las bases de datos. Aunque estas expresiones
no se evalúan hasta el momento en que se produce la llamada al método DataBind(). Pueden aparecer
errores de contexto que se producen demasiado tarde como para ser corregidos. Además, las
OPTATIVO IV 2
Ing. Rubén Sanabria
expresiones no pueden figurar como valor de atributo, de modo que la siguiente línea sería
incorrecta:
<asp:Label ID="Label1" runat="server" Text="<%= 10 %>"/>
Para satisfacer ambos requisitos, Microsoft ha dotado a ASP.NET de las $-expressions. Se trata de
expresiones de análisis en tiempo de compilación, que limitan el riesgo de errores contextuales y que
pueden figurar como valor de un atributo.
El servidor de aplicaciones ASP.NET y Visual Studio explotan, ambos, las $-expressions. Ciertas
expresiones estándar se reconocen directamente en Visual Studio y el desarrollador las aprovecha sin
tener que introducir código.
Ejemplo :
Y la codificación sería :
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ejercicio2.aspx.cs"
Inherits="Web001.ejercicio2" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h3>Hallar la suma de numeros del 1 al 10</h3>
OPTATIVO IV 3
Ing. Rubén Sanabria
<p></p>
<%
int nro = 1;
for (int i = 1; i < 11; i++)
{
%>
<li><%= i %> + 1 = <%= i+nro %></li>
<% } %>
</div>
</form>
</body>
</html>
Ejercicio 3
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style type="text/css">
.auto-style1 {
width: 100%;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div><p></p>
<% string cadena = "Bienvenidos a Scriptlets de ASP.NET";%><br />
<%= cadena %><br />
<% Response.Write(DateTime.Now.ToShortDateString()); %>
</div>
</form>
OPTATIVO IV 4
Ing. Rubén Sanabria
</body>
</html>
La codificación :
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ejercicio03.aspx.cs"
Inherits="Web001.ejercicio03" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style type="text/css">
.auto-style1 {
width: 100%;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
OPTATIVO IV 5
Ing. Rubén Sanabria
<td>ID</td>
<td>Nombre</td>
<td>Direccion</td>
</tr>
<tbody>
<%
for (int i = 0; i <= 10; i++)
{
%>
<tr>
<td> <%= i %></td>
<td><%= "nombre_"+i %></td>
<td><%= "direccion_"+i %></td>
</tr>
<%
}
%>
</tbody>
</table>
</div>
</form>
</body>
</html>
OPTATIVO IV 6
Ing. Rubén Sanabria
Y la codificación sería :
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<style type="text/css">
.auto-style1 {
width: 100%;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<h3>Arreglos o array simple</h3><br />
<%
string[] paises = new string[10];
paises[0] = "Argentina";
paises[1] = "Brasil";
paises[2] = "Bolivia";
paises[3] = "Chile";
paises[4] = "Colombia";
paises[5] = "Ecuador";
paises[6] = "Paraguay";
paises[7] = "Peru";
paises[8] = "Uruguay";
paises[9] = "Venezuela";
%>
<!-- se puede imprimir segun el numero de componente -->
OPTATIVO IV 7
Ing. Rubén Sanabria
%>
<li><%= pais %></li>
<%
}
%>
</ul>
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
OPTATIVO IV 8
Ing. Rubén Sanabria
OPTATIVO IV 9
Ing. Rubén Sanabria
Entonces se irán cargando los datos dentro de un List, hasta que presionemos el botón de
mostrar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Web001.Models
{
public class Persona
{
public int Doc { get; set; }
public string Nom { get; set; }
public string Dire { get; set; }
public string Telef { get; set; }
OPTATIVO IV 10
Ing. Rubén Sanabria
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Web001.Models;
namespace Web001
{
public partial class ejercicio06 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// Label5.Visible = false;
// Label5.Visible = true;
Label5.ForeColor = System.Drawing.Color.Green;
Label5.Text = "Registro agregado..";
// Label5.Visible = false;
}
OPTATIVO IV 11
Ing. Rubén Sanabria
Ingresamos a editar la grilla, para poder cambiar el formato del mismo, le damos el
formato de presentación que nos gusta etc.
OPTATIVO IV 12
Ing. Rubén Sanabria
Le cambiamos los
nombres de títulos
Los templatedFields, son las cabeceras del dataGrid, y los itemtemplate, son las filas del
dataGridView.
En los itemTemplate, se cargan los datos a ser mostrados, estos pueden ser de diversos tipos
OPTATIVO IV 13
Ing. Rubén Sanabria
Editar
Al darle Editar Plantillas nos aparece la siguiente pantalla :
Observamos el combo de itemTemplate, que cada columna tienen sus elementos de itemTemplate
OPTATIVO IV 14
Ing. Rubén Sanabria
OPTATIVO IV 15
Ing. Rubén Sanabria
OPTATIVO IV 16
Ing. Rubén Sanabria
En este evento hacemos doble click, y vemos que nos muestra el evento correspondiente:
Esto para saber en que fila hizo click sobre la grilla: en el evento
SelectedIndexChanging.
Podemos también en la Grilla poner el botón Borrar, nos vamos a las propiedades de la
grilla y ahí ponemos el AutoGenerateDeleteButton a True;
OPTATIVO IV 17
Ing. Rubén Sanabria
OPTATIVO IV 18
Ing. Rubén Sanabria
El único EditItemTemplate, que ponemos al editar el elementos es del tipo label, luego el
resto ponemos TextBox.
OPTATIVO IV 19
Ing. Rubén Sanabria
En el nombre ponemos:
Vemos que nos habilita los campos para ser editados, algunos de los campos no necesitamos
cambiar, por eso no edita.
OPTATIVO IV 20
Ing. Rubén Sanabria
//ctrl.actualizar(mer);
También podemos paginar la GridView, para eso nos vamos a las propiedades de la grilla y
ponemos :
AllowPaging a true.
OPTATIVO IV 21
Ing. Rubén Sanabria
Luego le decimos que queremos que se muestre la cantidad de filas en la grilla con las
propiedades de PageSize, por defecto es igual a 10
OPTATIVO IV 22
Ing. Rubén Sanabria
PageIndexChanged, y PageIndexChanging.
OPTATIVO IV 23
Ing. Rubén Sanabria
Uso de Script
Otra de las posibilidades que nos brinda ASP.Net, es la de usar Script, de la siguiente forma :
La codificación sería :
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ejercicio01.aspx.cs"
Inherits="Web002.ejercicio01" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script runat="server">
void enviar (object sender, EventArgs e)
{
label.Text = "Hola, " + textbox.Text + "!";
}
</script>
</head>
<body>
<form id="form1" runat="server" method="post">
<p></p>
Tu nombre:
<asp:TextBox ID="textbox" runat="server" />
<asp:Button OnClick="enviar" Text="Enviar" runat="server" />
<p>
<asp:Label ID="label" runat="server" /></p>
</form>
</body>
</html>
OPTATIVO IV 24