Web Programing
Ing. Alberto Moreno
Objetivo
Mostrar las novedades en el
desarrollo Web con el ASP.NET
2.0, el acceso a bases de datos y
el lenguaje C#
Web Programing
ASP.NET 2.0 implementa diversas
funcionalidades para el desarrollador
como productividad, administración y
gestión, extensibilidad y desempeño
Productividad
Nuevos controles de servidor
Master Pages
Themes y Skins
Soporte para dispositivos móviles
Nuevos controles de
servidor
Controles de Datos
Controles de Navegación
Controles de Login
Controles de Web Parts
Administración y Gestión
API de Configuración
Herramienta de Admin MMC
Herramienta de pre-compilación
Tracing y Monitoreo
Otros Recursos
Controles de Data Source
Soporte 64-Bits
Cache
Acceso a Bases de
Datos
Recursos:
Clasificación, paginación y cache de
datos
Actualización, eliminación e inserción
de datos
Filtros, Master-Detail
Acceso a Bases de
Datos
Controles Data Source:
SqlDataSource
ObjectDataSource
AccessDataSource
SiteMapDataSource
XmlDataSource
DataSetDataSource
Providers
Providers
Provider
s
Provider
s
DataSet tipado /
TableAdapter
Acceso a Bases de
Datos
Controles Data-bound:
GridView
DetailsView
FormView
TreeView
Menu
GridView
GridView
GridView
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1"
DataKeyNames="ProductID" AllowPaging="True" AllowSorting="True">
<Columns>
<asp:CommandField DeleteText="Excluir“ CancelText="Cancelar“
UpdateText="Atualizar" EditText="Editar"/>
<asp:BoundField ReadOnly="True" HeaderText="Cod" DataField="ProductID"/>
<asp:BoundField HeaderText="Produto" DataField="ProductName"/>
<asp:BoundField HeaderText="Estoque" DataField="UnitsInStock"
DataFormatString="{0:n0}"/>
<asp:BoundField HeaderText="Preco" DataField="UnitPrice“
DataFormatString="{0:n2}"/>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:myConnection %>"
UpdateCommand="UPDATE [Products] SET [ProductName] = @ProductName ..."
SelectCommand="SELECT [ProductID], [ProductName] … FROM [Products]"
InsertCommand="INSERT INTO [Products] ([ProductName] ..."
DeleteCommand="DELETE FROM [Products] WHERE [ProductID] ...">
</asp:SqlDataSource>
</form>
DetailsView
DetailsView
DetailsView
DetailsVie
w
Data Source
Edit / Insert / New /
Update
DetailsView
<form id="form1" runat="server">
<asp:DetailsView ID="DetailsView1" Runat="server“
DataSourceID="SqlDataSource1"
AutoGenerateRows="False" DataKeyNames="EmployeeID" AllowPaging="True">
<Fields>
<asp:BoundField ReadOnly="True" DataField="EmployeeID"/>
<asp:BoundField DataField="BirthDate" DataFormatString="{0:dd/MM/yyyy}"/>
...
<asp:CommandField ShowDeleteButton="True" ShowInsertButton="True“
ShowEditButton="True"/>
</Fields>
</asp:DetailsView>
<asp:SqlDataSource ID="SqlDataSource1" Runat="server"
DeleteCommand="DELETE FROM [Employees] WHERE
[EmployeeID]=@original_EmployeeID ... [Photo]=@original_Photo"
InsertCommand="INSERT INTO [Employees] ([LastName] ... [Photo]) VALUES
(@LastName ... @Photo)"
SelectCommand="SELECT [EmployeeID] ... [Address] FROM [Employees]“
…
DetailsView
…
UpdateCommand="UPDATE [Employees] SET [LastName] = @LastName ... AND
[Photo] = @original_Photo"
ConnectionString="<%$ ConnectionStrings:AppConnectionString1 %>">
<DeleteParameters>
<asp:Parameter Name="original_EmployeeID"></asp:Parameter>
...
<asp:Parameter Name="original_Photo"></asp:Parameter>
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Type="String" Name="LastName"></asp:Parameter>
...
<asp:Parameter Name="original_Photo"></asp:Parameter>
</UpdateParameters>
<InsertParameters>
<asp:Parameter Type="String" Name="LastName"></asp:Parameter>
...
<asp:Parameter Name="Photo"></asp:Parameter>
</InsertParameters>
</asp:SqlDataSource>
</form>
FormView
FormView
DataList
DataList
<asp:DataList ID="DataList1" Runat="server“
DataSourceID="SqlDataSource1" RepeatColumns="3">
<ItemTemplate>
<b>OrderID: </b>
<asp:Label ID="OrderIDLabel" Text='<%# Eval("OrderID") %>'/>
OrderDate:
<asp:Label ID="OrderDateLabel" Text='<%# Eval("OrderDate", "{0:d}")
...
ShipCountry:
<asp:Label ID="ShipCountryLabel" Text='<%# Eval("ShipCountry")%>'/>
</ItemTemplate>
</asp:DataList>
<asp:SqlDataSource ID="SqlDataSource1" Runat="server“
SelectCommand="SELECT [OrderID], [OrderDate], [ShipName],
[ShipAddress], [ShipCity], [ShipCountry] FROM [Orders]“
ConnectionString="<%$ ConnectionStrings:AppConnectionString1 %>">
</asp:SqlDataSource>
Objetos de Negocio
using System.Data;
using System.Data.SqlClient;
public class DataAccess
{
public static DataSet GetCategories()
{
string conexao = "Database=northwind;server=(local);user id=sa ";
string sql = "SELECT * FROM Categories";
SqlConnection conn = new SqlConnection(conexao);
SqlCommand command = new SqlCommand(sql, conn);
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataSet ds = new DataSet();
adapter.Fill(ds);
return ds;
}
}
Objetos de Negocio
public static DataSet GetProducts(int cat)
{
string conexao = "Database=northwind;server=(local);user id=sa";
SqlConnection conn = new SqlConnection(conexao);
SqlCommand command = new SqlCommand();
command.Connection = conn;
command.CommandType = CommandType.Text;
command.Parameters.Add(new SqlParameter("@cat", cat));
command.CommandText = "SELECT ProductID, ProductName, UnitPrice,
UnitsInStock FROM Products WHERE categoryID=@cat";
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataSet ds = new DataSet();
adapter.Fill(ds);
return ds;
}
Dropdown + GridView +
DLL
Dropdown + GridView +
DLL
TreeView + XML
<?xml version="1.0" encoding="utf-8" ?>
<collection>
<book>
<title>asp.net</title>
<author>dino esposito</author>
<publisher>ms press</publisher>
</book>
<book>
<title>sql reporting services</title>
<author>tom cruise</author>
<publisher>ms press</publisher>
</book>
</collection>
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
TreeView
<%@ Import Namespace="System.Data.SqlClient" %>
<script runat="server">
const string conexao = "Server=localhost;Database=Northwind;user id=sa";
void Page_Load()
{
if (! Page.IsPostBack)
FillNodes();
}
void FillNodes()
{
DataSet dst = GetData();
foreach (DataRow masterRow in dst.Tables["Categories"].Rows)
{
TreeNode masterNode = new TreeNode((string)masterRow["CategoryName"]);
TreeView1.Nodes.Add(masterNode);
foreach (DataRow childRow in masterRow.GetChildRows("Children"))
{
TreeNode childNode = new TreeNode((string)childRow["ProductName"]);
masterNode.ChildNodes.Add(childNode);
}
}
}
TreeView
DataSet GetData()
{
SqlConnection conn = new SqlConnection(conexao);
string sqlCat = "Select CategoryID, CategoryName FROM Categories";
string sqlProd = "Select CategoryID, ProductName FROM Products";
SqlDataAdapter daCat = new SqlDataAdapter(sqlCat, conn);
SqlDataAdapter daProd = new SqlDataAdapter(sqlProd, conn);
DataSet ds = new DataSet();
daCat.Fill(ds, "Categories");
daProd.Fill(ds, "Products");
ds.Relations.Add("Children",
ds.Tables["Categories"].Columns["CategoryID"],
ds.Tables["Products"].Columns["CategoryID"]);
return ds;
}
<script runat="server">
TreeView
string conexao = "Database=northwind;server=(local);user id=sa";
void TreeView1_TreeNodePopulate(object sender, TreeNodeEventArgs e)
{
SqlConnection con = new SqlConnection(conexao);
string sql = "SELECT EmployeeID, FirstName FROM Employees";
SqlCommand cmd = new SqlCommand(sql, con);
con.Open();
using (con)
{
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
TreeNode newNode = new TreeNode();
newNode.PopulateOnDemand = true;
newNode.Text = reader["FirstName"].ToString();
newNode.Value = reader["EmployeeID"].ToString();
e.Node.ChildNodes.Add(newNode);
}
}
}
</script>
Visual C# 2005
Visual C# 2005
Visual C# 2005
Visual C# 2005
Visual C# 2005