Está en la página 1de 52

________________________________________________

Programa Desarrollador Cinco Estrellas 2005


Estrella 2
________________________________________________
Guia de Ejericicios Aplicaciones Web Forms
con ASP.NET
Pgina 1 de 5
ndice
!e"uisi#os................................................................................................................................$
%n#roducci&n.............................................................................................................................'
ASP .NET .( Paso a Paso.................................................................................................5
Grid )ie*.................................................................................................................................5
+e#ails)ie*............................................................................................................................1,
Form)ie*..............................................................................................................................'
+a#a-is#..................................................................................................................................
Enla/ando +a#os con 0bje#os..............................................................................................$(
Enla/ando con la capa de acceso a +a#os.......................................................................$(
Enla/ando a una 1lase de Negocios................................................................................$2
T!EE)%EW 3 +a#aAdap#er...................................................................................................'2
Pgina de 5
Requisitos
4aber cursado 5 aprobado el e6amen correspondien#e al m&dulo de la Es#rella 1 del
programa +esarrollador 5 Es#rellas.
4aber le7do 5 comprendido el ma#erial #e&rico correspondien#e al m&dulo de la
Es#rella del programa.
Para la resolucion de los ejercicios debe #ener ins#alado8
o 9S )isual S#udio ((5 : )isual Web +e;eloper ((5 E6press Edi#ion.
o 9S S<- Ser;er ((5 E6press Edi#ion.
+ebe ins#alar adems las siguien#es bases de da#os8
- Nor#=*ind >=##p8::***.microso?#.com:do*nloads:de#ails.asp6@Famil5%dA(,,1,1B
($5,B',A(BC+ABEED15$A,C($'Edispla5langAen F
- Ad;en#ureWorGs >=##p8::***.microso?#.com:do*nloads:de#ails.asp6@
?amil5idA2,2.AAAABA+'DB'1,EBC.A'BACD15'F2.C.Edispla5langAen F
Para ins#alar correc#amen#e la base Ad;en#ureWorGs se recomienda la lec#ura del
documen#o #i#ulado HSQL Server 2005 Databases and Samples OverviewIJ "ue acompaKa
a es#a guia. TambiLn puede ser descargado de
=##p8::do*nload.microso?#.com:do*nload:d:C:,:dC,5c?(cBc''bB'(1bBb',B
b$b?5c,C11:S<-Ser;er+a#abasesAndSamples0;er;ie*.=#m
Pgina $ de 5
Introduccin
En el presen#e documen#o se desarrollan dis#in#os ejercicios HPaso a PasoI "ue sir;en de
complemen#o al curso Es#rella ASP.NETJ del programa +esarrollador 5 Es#rellas.
-os ejercicios a"u7 desarrollados mues#ran paso a paso como reali/ar aplicaciones *eb
simples con acceso a da#osJ 5 pueden reali/arse en 1M 5:o )D.NET >=a5 porciones de
c&digo #ranscrip#asJ e imgenes "ue lo guiarn para lograr los obje#i;osF.
Se =an resuel#o algunos de los ejercicios para "ue el alumno pueda #ener el ejemplo del
codigo #erminado. -os ejercicios resuel#os de es#a guia paso a paso son8
Grid)ie*
+e#ails)ie*
Enla/ando con la capa de negocios
Todos ellos se encuen#ran en el pro5ec#o DCE2005 Acceso a DatosJ adjun#o al ma#erial
del curso.
TambiLn se encuen#ran adjun#as al ma#erial o#ros dos pro5ec#osJ uno "ue ejempli?ica la
u#ili/aci&n de los nue;os con#roles de login incorporados en ASP.NET .(J 5 o#ro "ue
mues#ra la u#ili/aci&n de pginas maes#ras 5 los nue;os con#roles de na;egaci&n 5 menN.
En el ejercicio de Acceso a +a#os se inclu5en #ambiLn el nue;o concep#o de T=emes E
SGinsJ para dar a la aplicaci&n un aspec#o agradable >es#e nue;o #ema es#a desarrollado
en la presen#aci&n #e&ricaF.
Pgina ' de 5
ASP .NE 2.0 ! Paso a Paso
"rid #ie$
%&'eti(o) 1ons#ruir un ?ormulario con un con#rol Grid)ie* para ;isuali/arJ
modi?icar 5 eliminar da#os de la #abla HProduc#sI de la base de da#os
Nor#=*ind.
N%A8 -a serie de pasos u#ili/ada en la resoluci&n del presen#e ejercicio no necesariamen#e re?leja las
mejores prc#icas de +esarrollo 5 Ar"ui#ec#ura de aplicaciones empresariales es#ablecidas por 9icroso?#.
1. Abra el )isual Web +e;eloper ((5 E6press Edi#ion. Seleccione el menN File : Ne*
Web Si#e para crear un nue;o Web Si#eJ segNn la siguien#e ?igura. No#e "ue el
lenguaje es el )isual DasicJ pero si us#ed desea cambiarlo a )isual 1M no =a5
ningNn problemaJ 5a "ue los pasos son los mismos.
. -uego presione el bo#&n 0O. Se abrir una ;en#ana con#eniendo la pgina
+e?aul#.asp6 con el 4T9- "ue se mos#rar. A los e?ec#os del ejercicioJ ;amos a
crear pginas rela#i;as al #&pico abordadoJ por lo #an#oJ abra el Solu#ion E6plorer
>1#rl 3 Al# 3 -F 5 e6clu5a es#a pgina. Para agregar una nue;a pgina al Solu#ion
E6plorerJ =aga clicG con el bo#&n derec=o sobre 18PWebSi#eP+1E(((5 5 seleccione
Add Ne* %#em. Escriba Grid)ie*.asp6 en el nombre de la pgina 5 =aga clicG en
Add.
Pgina 5 de 5
$. En caso de "ue "uiera escribir los Tags 4T9- direc#amen#e en es#a ;en#anaJ
siLn#ase a gus#oJ sin embargoJ le mos#rarL los con#roles en la ;en#ana de +esign.
Siendo as7J =aga clicG en el bo#&n +esign en el pie de la pgina.
Pgina , de 5
'. Abra la Toolbo6 5 arras#re un con#rol Grid)ie* =acia el ?ormulario. Se abrir una
Smar# Tag con#eniendo di;ersas opciones.
Pgina . de 5
5. Seleccione Au#o Forma# 5 apli"ue un ?orma#o de acuerdo con su gus#o.
,. Para de?inir la ?uen#e de da#osJ en 1=oose +a#a Source seleccione Ne* +a#a
Source.
.. Qs#ed puede seleccionar cual"uier ?uen#e de da#osJ pero en es#e caso elija
+a#abase. No#e "ue 5a se de?ine un %+ >S"l+a#aSource1FJ 5 en caso de "ue "uiera
al#erarlo bas#ar con escribirlo. 1omo ;amos a u#ili/ar es#a cone6i&n en ;arios
ejerciciosJ deje el c=ecGbo6 de cone6i&n seleccionado para "ue la s#ring de
cone6i&n sea almacenada en el arc=i;o Web.1on?ig.
Pgina C de 5
C. Se abrir un H*i/ardI por el cual se con?igura la base de da#os 5 se arma la cadena
de cone6i&nJ le dejamos ese paso para "ue lo con?igure de acuerdo a sus
necesidades.
2. Qna ;e/ con?igurada la cadena de cone6i&n necesi#a iden#i?icar cul es la #abla "ue
ser usada como ?uen#e de da#os. Seleccione Produc#os 5 algunos campos.
Pgina 2 de 5
1(. 1omo permi#iremos la edici&n de da#os en el Grid)ie*J =aga clicG en el bo#&n
Ad;anced para abrir es#a ;en#anaJ donde seleccionar las dos opciones para incluir
en el con#rol S"l+a#aSource #odas las ins#rucciones S<- "ue =acen e?ec#i;as es#as
operaciones.
Pgina 1( de 5
11. En la Smar# Tag se mues#ran los c=ecGbo6es para "ue ac#i;e las operaciones.
Seleccione8
Enable PagingJ para permi#ir la paginaci&n.
Enable Sor#ingJ para permi#ir el ordenado por columna.
Enable Edi#ingJ para permi#ir la edici&n de da#os direc#amen#e en el Grid)ie*.
Enable +ele#ingJ para permi#ir la e6clusi&n de da#os.
1. Si desea edi#ar las columnasJ seleccione Edi# 1olumns. Primero deber Hdes
seleccionarI el #ilde campo HAu#o genera#e 1olumnsIJ 5 luego aKadir las columnas
"ue desee8
Pgina 11 de 5
1$. Puede aplicar el ?orma#o "ue desee en los camposJ por ejemplo con?igure el
?orma#o en el campo HProduc#Number para "ue sea e6=ibido como numLricoJ sin
decimales >+a#aForma#S#ring A R(8n(SF.
Se puede aplicar cual"uier ?orma#o a las columnas.
Pgina 1 de 5
1'. 1omo ?ue permi#ida la edici&n de da#os en el con#rolJ personalice los bo#ones al
idioma en el "ue el con#rol ser u#ili/ado. Para elloJ seleccione el 1ommand FieldJ
localice las propiedades Te6# de cada bo#&n 5 modi?i"ue el #e6#o.
Pgina 1$ de 5
15. Seleccione Au#o Forma# en el Smar# TagJ 5 apli"ue un ?orma#o de acuerdo con su
agrado. >en el ejemplo adjun#o en el ma#erial se u#ili/a un T=eme para la de?inici&n
del es#iloF
1,. Guarde el pro5ec#o 5 presione 1T!- 3 F5 para ejecu#arlo en el na;egador.
Es impor#an#e des#acar "ue el ASP.NET .( no necesi#a #ener un %%S ins#alado en la
m"uinaJ 5a "ue #rabaja con su propio ser;idor *eb de desarrollo.
Pgina 1' de 5
El cdigo de este ejercicio se encuentra en el ejemplo adjunto DCE2005 Acceso a Datos, en la
pgina GridVie!asp", tenga en cuenta #ue en el ejercicio resuelto se utili$a una %ster
&age ' ()emes para dar un *ormato ' estilo amiga+le!
Pgina 15 de 5
Details#ie$
%&'eti(o) 1ons#ruir un ?ormulario con el con#rol +e#ails)ie* para ;isuali/ar 5
modi?icar los regis#ros de la #abla HEmplo5esI de la base de da#os
Ad;en#ureWorGs.
N%A8 -a serie de pasos u#ili/ada en la resoluci&n del presen#e ejercicio no necesariamen#e re?leja las
mejores prc#icas de +esarrollo 5 Ar"ui#ec#ura de aplicaciones empresariales es#ablecidas por 9icroso?#.
1. Agregue un nue;o Web Form al Solu#ion E6plorerJ llmelo +e#ails)ie*.asp6.
. Abra la Toolbo6 5 arras#re un con#rol +e#ails)ie* =acia el ?ormulario. Se abrir una
;en#ana con la Smar# Tag para in?ormar la ?uen#e de da#os. Seleccione Ne* da#a
source8
$. %n?orme cul es la ?uen#e de da#osJ en es#e caso es una +a#abase.
Pgina 1, de 5
'. Seleccione la #abla Emplo5ees con algunos campos.
Pgina 1. de 5
5. 4aga clicG en el bo#&n Ad;anced 0p#ions 5 seleccione los dos c=ecGbo6es para "ue
sean creados los mL#odos para sopor#ar la inserci&n 5 edici&n de da#os.
Pgina 1C de 5
,. )ol;iendo al Smar# TagJ seleccione #odos los c=ecGbo6es para ac#i;ar la paginaci&n
5 el man#enimien#o de da#os.
.. .%ngrese a la opci&n HEdi#FieldsTI 5 des seleccione la opci&n HAu#o genera#e
columnsI. +el mismo modo "ue =i/o con la grillaJ aKada los campos "ue desee por
medio de la opci&n HAdd Ne* FieldTI
C. Personalice el campo HFec=a Finali/aci&nI para "ue "uede con el ?orma#o de
acuerdo con la propiedad +a#aForma#S#ringJ "ue es R(8dd:99:5555S. El H(8I indica
"ue ser el campo ac#ual 5 el ?orma#o ;iene a con#inuaci&n.
Pgina 12 de 5
2. Si anali/a el c&digo 4T9- generadoJ no#ar "ue el con#enido de la ?uen#e de da#os
es# declarado den#ro del 4T9- a #ra;Ls de la Tag asp8S"l+a#aSource.
Pgina ( de 5
<form id="form1" runat="server">
<asp:DetailsView ID="DetailsView1" runat="server" AllowPaging="True"
AutoGenerateows="!alse" "a#$%olor="&D'"A()" "order%olor="&D'"A()"
"order*t+le=",one" "order-idt.="1p/" %ellPadding="0" %ell*pa#ing="1"
Data*our#eID="*2lData*our#e1" 3eig.t="45p/" -idt.="114p/">
<!ooter*t+le "a#$%olor="&!6D!"4" !ore%olor="&(%)415" 7>
<'ditow*t+le "a#$%olor="&60(A8%" !ont9"old="True" !ore%olor="-.ite" 7>
<ow*t+le "a#$%olor="&!!!6'6" !ore%olor="&(%)415" 7>
<Pager*t+le !ore%olor="&(%)415" 3ori:ontalAlign="%enter" 7>
<!ields>
<asp:%ommand!ield *.owDelete"utton="True" *.ow'dit"utton="True"
*.owInsert"utton="True" 7>
<asp:"ound!ield Data!ield="Produ#tId" 3eaderTe/t="%odigo"
*ort'/pression="Produ#tId" 7>
<asp:"ound!ield Data!ield=",ame" 3eaderTe/t=",om;re" *ort'/pression=",ame" 7>
<asp:"ound!ield Data!ield="Produ#t,um;er" 3eaderTe/t="Produ#to"
*ort'/pression="Produ#t,um;er" 7>
<asp:"ound!ield Data!ield="Da+sTo<anufa#ture" 3eaderTe/t="Demora en Dias"
*ort'/pression="Da+sTo<anufa#ture" 7>
<asp:"ound!ield Data!ield="=istPri#e" 3eaderTe/t="Pre#io"
*ort'/pression="=istPri#e" 7>
<asp:"ound!ield Data!ield="Dis#ontinuedDate" Data!ormat*tring=">5:dd7<<7++++?"
3eaderTe/t="!e#.a !inali:a#ion" *ort'/pression="Dis#ontinuedDate" 7>
<7!ields>
<3eader*t+le "a#$%olor="&A44118" !ont9"old="True" !ore%olor="-.ite" 7>
<7asp:DetailsView>
<asp:SqlDataSource ID="s2lData*our#e" runat="server" %onne#tion*tring="<@A
%onne#tion*trings:ADV',TB'-CD*%onne#tion*tring @>"
%onfli#tDete#tion="%ompareAllValues"
SelectCommand="*'='%T EProdu#tIDFG E,ameFG EProdu#t,um;erFG E%olorFG
EDa+sTo<anufa#tureFG E=istPri#eFG EDis#ontinuedDateF !C< EProdu#tionFHEProdu#tF"
DeleteCommand="D'='T' !C< EProdu#tionFHEProdu#tF -3'' EProdu#tIDF =
IoriginalJProdu#tID A,D E,ameF = IoriginalJ,ame A,D EProdu#t,um;erF =
IoriginalJProdu#t,um;er A,D E%olorF = IoriginalJ%olor A,D EDa+sTo<anufa#tureF =
IoriginalJDa+sTo<anufa#ture A,D E=istPri#eF = IoriginalJ=istPri#e A,D
EDis#ontinuedDateF = IoriginalJDis#ontinuedDate"
InsertCommand="I,*'T I,TC EProdu#tionFHEProdu#tF KE,ameFG EProdu#t,um;erFG
E%olorFG EDa+sTo<anufa#tureFG E=istPri#eFG EDis#ontinuedDateFL VA=B'* KI,ameG
IProdu#t,um;erG I%olorG IDa+sTo<anufa#tureG I=istPri#eG IDis#ontinuedDateL"
CldValuesParameter!ormat*tring="originalJ>5?"
UpdateCommand="BPDAT' EProdu#tionFHEProdu#tF *'T E,ameF = I,ameG EProdu#t,um;erF
= IProdu#t,um;erG E%olorF = I%olorG EDa+sTo<anufa#tureF = IDa+sTo<anufa#tureG
E=istPri#eF = I=istPri#eG EDis#ontinuedDateF = IDis#ontinuedDate -3''
EProdu#tIDF = IoriginalJProdu#tID A,D E,ameF = IoriginalJ,ame A,D EProdu#t,um;erF
= IoriginalJProdu#t,um;er A,D E%olorF = IoriginalJ%olor A,D EDa+sTo<anufa#tureF =
IoriginalJDa+sTo<anufa#ture A,D E=istPri#eF = IoriginalJ=istPri#e A,D
EDis#ontinuedDateF = IoriginalJDis#ontinuedDate"> <DeleteParameters>
<asp:Parameter Name="original_EmploeeID"><!asp:Parameter>
"""
Pgina 1 de 5
<asp:Parameter Name="original_P#oto"><!asp:Parameter>
<!DeleteParameters>
<UpdateParameters>
<asp:Parameter $pe="String" Name="%astName"><!asp:Parameter>
"""
<asp:Parameter Name="original_P#oto"><!asp:Parameter>
<!UpdateParameters>
<InsertParameters>
<asp:Parameter $pe="String" Name="%astName"><!asp:Parameter>
"""
<asp:Parameter Name="P#oto"><!asp:Parameter>
<!InsertParameters>
<!asp:SqlDataSource>
<!&orm>
1(. Guarde el pro5ec#o 5 ejecN#elo en el na;egador. %nclu5a un nue;o regis#ro 5
gurdelo. EnseguidaJ modi?i"ue el con#enido 5 guarde nue;amen#e.
Pgina de 5
El cdigo de este ejercicio se encuentra en el ejemplo adjunto DCE2005 Acceso a Datos, en la
pgina DetailsVie!asp"! (enga en cuenta #ue en el ejercicio resuelto se utili$a una %aster
&age ' ()emes para dar un *ormato ' estilo amiga+le!
Pgina $ de 5
*orm#ie$
%&'eti(o) 1ons#ruir un ?ormulario con el con#rol Form)ie* para ;isuali/ar los
regis#ros de la #abla H1us#omersI de la base de da#os Nor#=Wind.
N%A8 -a serie de pasos u#ili/ada en la resoluci&n del presen#e ejercicio no necesariamen#e re?leja las
mejores prc#icas de +esarrollo 5 Ar"ui#ec#ura de aplicaciones empresariales es#ablecidas por 9icroso?#.
1. Agregue un nue;o Web Form en el Solu#ion E6plorer. Arras#re el con#rol Form)ie*
=acia el ?ormulario.
. -a ?uen#e de da#os ser un +a#abase. Seleccione la #abla 1us#omers de la base de
da#os Nor#=*ind 5 #odos los campos.
Pgina ' de 5
$. Apli"ue un Au#o Forma# segNn la opci&n.
'. Ajus#e el la5ou# de manera "ue "uepan #odos los da#os.
Pgina 5 de 5
5. Guarde el pro5ec#o 5 ejecN#elo en el na;egador. Na;egue en las pginas para
;isuali/ar los regis#ros.
Pgina , de 5
Data+ist
%&'eti(o) 1ons#ruir un ?ormulario con el con#rol +a#a-is#. Es#e con#rol
mues#ra di;ersos regis#ros en la misma pgina en la "ue us#ed debe
de#erminar el rea de da#os 5 el respec#i;o la5ou#.
N%A8 -a serie de pasos u#ili/ada en la resoluci&n del presen#e ejercicio no necesariamen#e re?leja las
mejores prc#icas de +esarrollo 5 Ar"ui#ec#ura de aplicaciones empresariales es#ablecidas por 9icroso?#.
1. Agregue un nue;o Web Form al Solu#ion E6plorer.
Arras#re el con#rol +a#a-is# =acia el ?ormulario.
1omo en los ejercicios an#eriores seleccione el +a#aSourceJ en es#e caso
seleccione la #abla 0rders.
. 1on?igure con Au#oForma# para "ue el con#rol #enga un aspec#o de su agrado.
$. Personalice el campo 0rder+a#e para "ue la ?ec=a sea mos#rada en el ?orma#o
adecuado.
Para elloJ seleccione el 0rder+a#e-abel 5 el enlace Edi# +a#aDindings.
1on?igure el ?orma#o para S=or# +a#e.
Pgina . de 5
'. No#e "ue en el 4T9-J la propiedad cla;e para e6=ibir los da#os es la Te6# donde usa
el E;al>?ieldF.
<asp:Data=ist ID="Data=ist1" unat="serverM
Data*our#eID="*2lData*our#e1" epeat%olumns="0">
<ItemTemplate>
<;>CrderID: <7;>
<asp:=a;el ID="CrderID=a;el" Te/t=N<@& 'valK"CrderID"L @>N7>
CrderDate:
<asp:=a;el ID="CrderDate=a;el" Te/t=N<@& 'valK"CrderDate"G ">5:d?"L
HHH
*.ip%ountr+:
<asp:=a;el ID="*.ip%ountr+=a;el" Te/t=N<@& 'valK"*.ip%ountr+"L@>N7>
<7ItemTemplate>
<7asp:Data=ist>
<asp:*2lData*our#e ID="*2lData*our#e1" unat="serverM
*ele#t%ommand="*'='%T ECrderIDFG ECrderDateFG E*.ip,ameFG
E*.ipAddressFG E*.ip%it+FG E*.ip%ountr+F !C< ECrdersFM
%onne#tion*tring="<@A %onne#tion*trings:App%onne#tion*tring1 @>">
<7asp:*2lData*our#e>
Pgina C de 5
5. Guarde el pro5ec#o 5 ejecN#elo en el na;egador.
Pgina 2 de 5
Enla,ando Datos con %&'etos
Enlazando con la capa de acceso a Datos
%&'eti(o) +e?inir una clase de de Acceso a +a#os >+A-F con#eniendo
mL#odos para acceder a una base de da#os "ue de;uel;an un +a#aSe# para
enla/ar los da#os en los con#roles "ue sean necesarios.
N%A8 -a serie de pasos u#ili/ada en la resoluci&n del presen#e ejercicio no necesariamen#e re?leja las
mejores prc#icas de +esarrollo 5 Ar"ui#ec#ura de aplicaciones empresariales es#ablecidas por 9icroso?#.
1. En el Solu#ion E6plorerJ agregue un nue;o pro5ec#o #ipo 1lass -ibrar5 llamado
+a#aAccess.
. 1omo accederemos al S<- Ser;erJ en la primera l7nea de la pan#alla escriba los
Namespaces "ue con#ienen los mL#odos 5 propiedades para e?ec#uar el acceso.
En es#e casoJ el namespace "ue con#iene la clase S"l1lien#J la cual ?ue creada para
manipular da#os con S<- Ser;er . o superior.
'("NE$
Imports *+stemHData
Imports *+stemHDataH*2l%lient
C)
using *+stemHDataO
using *+stemHDataH*2l%lientO
$. Escriba el mL#odo llamado Ge#1a#egories "ue de;uel;e un +a#aSe#.
Es#e mL#odo8
u#ili/ar el s#ring de cone6i&n llamado m51onn "ue es# almacenado en el
arc=i;o Web.1on?igU
de?ine una ins#rucci&n S<- "ue selecciona #odos los campos de la #abla
1a#egoriesU
de?ine la cone6i&n 5 el 1ommand "ue implemen#a el Selec#U
crea un +a#aAdap#er 5 un +a#aSe#U
comple#a el +a#aAdap#er en el respec#i;o +a#aSe# de?inido 5 lo de;uel;e.
9ien#ras #an#oJ el mL#odo Ge#Produc#s recibe como argumen#o el c&digo de la
ca#egor7a 5 de;uel;e un +a#ase# con los produc#os de esa ca#egor7a.
Pgina $( de 5
Es#e c&digo ser usado como cri#erio en la ins#rucci&n S<- para in;es#igar #odos
los produc#os de la respec#i;a ca#egor7a8
'("NE$
Pu;li# %lass DataA##ess
Pu;li# *.ared !un#tion *etCategoriesKL As Data*et
Dim #one/ion As *tring =
%onfiguration*ettingsH%onne#tion*tringsKMm+%onn"LH%onne#tion*tringKL
Dim s2l As *tring = "*'='%T P !C< %ategories"
Dim #onn As ,ew *2l%onne#tionK#one/ionL
Dim #ommand As ,ew *2l%ommandKs2lG #onnL
Dim adapter As ,ew *2lDataAdapterK#ommandL
Dim ds As ,ew Data*et
adapterH!illKdsL
eturn ds
'nd !un#tion
Pu;li# *.ared !un#tion *etProductsK"+Val #at As IntegerL As Data*et
Dim #one/ion As *tring =
%onfiguration*ettingsH%onne#tion*tringsKMm+%onn"LH%onne#tion*tringKL
Dim #onn As ,ew *2l%onne#tionK#one/ionL
Dim #ommand As ,ew *2l%ommandKL
#ommandH%onne#tion = #onn
#ommandH%ommandT+pe = %ommandT+peHTe/t
#ommandHParametersHAddK,ew *2lParameterK"I#at"G #atLL
#ommandH%ommandTe/t = "*'='%T Produ#tIDG Produ#t,ameG BnitPri#eG
BnitsIn*to#$ !C< Produ#ts -3'' #ategor+ID=I#at"
Dim adapter As ,ew *2lDataAdapterK#ommandL
Dim ds As ,ew Data*et
adapterH!illKdsL
Pgina $1 de 5
eturn ds
'nd !un#tion
'nd %lass
C)
pu;li# #lass DataA##ess
>
pu;li# stati# Data*et *etCategoriesKL
>
string #one/ion = "Data;ase=nort.windOserver=Klo#alLOuser id=sa "O
string s2l = "*'='%T P !C< %ategories"O
*2l%onne#tion #onn = new *2l%onne#tionK#one/ionLO
*2l%ommand #ommand = new *2l%ommandKs2lG #onnLO
*2lDataAdapter adapter = new *2lDataAdapterK#ommandLO
Data*et ds = new Data*etKLO
adapterH!illKdsLO
return dsO
?
pu;li# stati# Data*et *etProductsKint #atL
>
string #one/ion = "Data;ase=nort.windOserver=Klo#alLOuser id=sa"O
*2l%onne#tion #onn = new *2l%onne#tionK#one/ionLO
*2l%ommand #ommand = new *2l%ommandKLO
#ommandH%onne#tion = #onnO
#ommandH%ommandT+pe = %ommandT+peHTe/tO
#ommandHParametersHAddKnew *2lParameterK"I#at"G #atLLO
#ommandH%ommandTe/t = "*'='%T Produ#tIDG Produ#t,ameG BnitPri#eG
BnitsIn*to#$ !C< Produ#ts -3'' #ategor+ID=I#at"O
Pgina $ de 5
*2lDataAdapter adapter = new *2lDataAdapterK#ommandLO
Data*et ds = new Data*etKLO
adapterH!illKdsLO
return dsO
?
?
'. Guarde el pro5ec#o. Agregue un nue;o Web Form en el Solu#ion E6plorer. Escriba
1a#egor7as 5 arras#re el con#rol +rop+o*n-is# =acia el ?ormulario. En la Smar# TagJ
seleccione el c=ecGbo6 Au#oPos#DacG para en;iar el con#enido de es#e con#rol al
ser;idor.
5. Para la ?uen#e de da#os seleccione 0bjec#J 5a "ue usaremos la clase de?inida
an#eriormen#e. En caso de "ue desee al#erar el nombre del +a#aSourceJ siLn#ase
libre de =acerlo.
Pgina $$ de 5
,. En el Tab Selec# se mues#ran #odos los mL#odos e6is#en#es. Seleccione el
Ge#1a#egories 5 obser;e "ue el #ipo de re#orno es un +a#aSe#.
Pgina $' de 5
.. 1omo el con#rol es un +rop+o*n-is#J escriba 1a#egor5Name en H+a#a Field #o
+ispla5IJ por"ue es a"u7 "ue el campo ser e6=ibido. Por o#ra par#aJ el I+a#a Field
?or #=e )alueI es el campo "ue ser almacenado cuando el usuario seleccione un
7#emJ por lo #an#o escriba 1a#egor5%+.
C. A con#inuaci&n 1ons#ruiremos en el ?ormulario un Grid)ie* para mos#rar #odos los
produc#os de la respec#i;a ca#egor7a. Seleccione como +a#a Source el 0bjec#
+a#aAccess 5 el mL#odo Ge#Produc#s.
Pgina $5 de 5
2. 1omo es#e mL#odo re"uiere un parme#roJ =a5 "ue especi?icar "ue ;endr del
con#rol +rop+o*n-is#1J para es#o seleccione en el combo Parame#erSource la
opci&n H1on#rolIJ 5 seleccione en el combo H1on#rol%dIJ el con#rol "ue corresponda.
Pgina $, de 5
1(. En la Smar# TagJ =abili#e la paginaci&n 5 el ordenamien#oJ 5 con?igure el ?orma#o
para la grilla "ue sea de su agrado.
Pgina $. de 5
11. Guarde el pro5ec#o 5 ejecN#elo en el na;egador. Seleccione o#ras ca#egor7as 5 ;ea
"ue el Grid)ie* mues#ra #odos los produc#os de la ca#egor7a seleccionada.
Pgina $C de 5
Enlazando a una Clase de Negocios
%&'eti(o) 0b#ener los depar#amen#os de la base de da#os Ad;en#ureWorGs
segNn el grupo solici#ado por el clien#e >se u#ili/ar la #abla H+epar#men#IF.
+e?inir un componen#e de negocios "ue implemen#e HreglasI a los da#os
ob#enidos del componen#e de acceso a da#os.
%mplemen#ar el componen#e den#ro de la carpe#a ;ir#ual HAppV1odeI.
N%A8 -a serie de pasos u#ili/ada en la resoluci&n del presen#e ejercicio no necesariamen#e re?leja las
mejores prc#icas de +esarrollo 5 Ar"ui#ec#ura de aplicaciones empresariales es#ablecidas por 9icroso?#.
1. En el Solu#ion E6plorerJ con el bo#&n derec=o del 9ouse sobre el pro5ec#o agregue
la carpe#a ;ir#ual HAppV1odeI8
Pgina $2 de 5
. +en#ro de la carpe#a generadaJ incorpore #res clases8 HAcceso+a#os.csIJ
H1apa+eNegocio.csI 5 H+epar#amen#o.csI.
)eamos primero la clase de acceso a da#os8
77*e in#lu+en las referen#ias ne#esariasG ademQs de las de a##eso a
77datos + *2lG los namespa#es Musing *+stemH%olle#tionsHGeneri#R +
77Musing *+stemHTe/tR serQn utili:ados para poder utili:ar una lista
77generi#a para la devolu#ion de datos + un #ontru#tor de #adenas para
77#rear la #adena de #onsultasH
'("NE$
Imports *+stemHData
Imports *+stemHDataH*2l%lient
Imports *+stemH%olle#tionsHGeneri#
Imports *+stemHTe/t
C)
using *+stemHDataO
using *+stemH%olle#tionsHGeneri#O
using *+stemHTe/tO
using *+stemHDataH*2l%lientO
$. En es#a clase "ue simula el componen#e de acceso a da#osJ =a5 "ue incorporar un
mL#odo "ue de;uel;a los +epar#amen#os por gruposJ de acuerdo al re"uisi#o. -a
clase comple#a se encuen#ra en el pro5ec#o H+1E((5 Acceso a +a#osIJ "ue
#ambiLn posee un mL#odo para de;ol;er los grupos en "ue se di;iden los
depar#amen#os.
'("NE$
Pu;li# !un#tion C;tenerDepartamentosK"+Val grupo As *tringL As =istKCf
DepartamentoL
Dim departamentos As =istKCf DepartamentoL = ,ew =istKCf DepartamentoL
Dim 2uer+ As *tring"uilder = ,ew *tring"uilder
2uer+HAppendK"*'='%T "L
2uer+HAppendK"DepartmentIDG "L
2uer+HAppendK",ameG "L
2uer+HAppendK"<odifiedDate "L
2uer+HAppendK"!C< E3umanesour#esFHEDepartmentF "L
2uer+HAppend!ormatK"-3'' Group,ame = N>5?N "G grupoL
2uer+HAppendK"Crder "+ ,ame"L
Dim #ommand As *2l%ommand = ,ew *2l%ommand
#ommandH%ommandTe/t = 2uer+HTo*tring
Pgina '( de 5
Dim #onn As *2l%onne#tion = ,ew
*2l%onne#tionK%onfiguration<anagerH%onne#tion*tringsK"ADV',TB'-CD*%onne#tion*tr
ing"LH%onne#tion*tringL
#ommandH%onne#tion = #onn
Tr+
#onnHCpenKL
N Bsing
Dim dr As *2lDataeader = #ommandH'/e#uteeader
Tr+
If drH3asows T.en
-.ile drHead
Dim dep As Departamento = ,ew
DepartamentoK%onvertHToInt01KdrK5LLG drK1LHTo*tringG grupoG
%onvertHToDateTimeKdrK1LLL

departamentosHAddKdepL
'nd -.ile
'nd If
!inall+
%T+peKdrG IDisposa;leLHDisposeKL
'nd Tr+
%at#. e/ As '/#eption
T.row e/
!inall+
#onnH%loseKL
'nd Tr+

eturn departamentos
'nd !un#tion
Pgina '1 de 5
C)
777 <summar+>
777 'ste metodo o;tiene los departamentos por gruposH
777 <7summar+>
777 <param name="grupo">'l grupo sele##ionado del #om;o<7param>
777 <returns>Bna lista de departamentosH<7returns>
pu;li# =ist<Departamento> C;tenerDepartamentosKstring grupoL
>
=ist<Departamento> departamentos = new =ist<Departamento>KLO
*tring"uilder 2uer+ = new *tring"uilderKLO
2uer+HAppendK"*'='%T "LO
2uer+HAppendK"DepartmentIDG "LO
2uer+HAppendK",ameG "LO
2uer+HAppendK"<odifiedDate "LO
2uer+HAppendK"!C< E3umanesour#esFHEDepartmentF "LO
2uer+HAppend!ormatK"-3'' Group,ame = N>5?N "G grupoLO
2uer+HAppendK"Crder "+ ,ame"LO
*2l%ommand #ommand = new *2l%ommandKLO
#ommandH%ommandTe/t = 2uer+HTo*tringKLO
*2l%onne#tion #onn = new *2l%onne#tionK
%onfiguration<anagerH%onne#tion*tringsE
"ADV',TB'-CD*%onne#tion*tring" FH%onne#tion*tringLO
#ommandH%onne#tion = #onnO
tr+
>
#onnHCpenKLO
using K*2lDataeader dr = #ommandH'/e#uteeaderKLL
>
if KdrH3asowsL
>
w.ileKdrHeadKLL
>
Departamento dep = new DepartamentoK
%onvertHToInt01K drE5FLG
drE1FHTo*tringKLG
grupo G
%onvertHToDateTimeKdrE1FL
LO
departamentosHAddKdepLO
?
?
?
?
#at#. K'/#eption e/L
>
t.row e/O
?
finall+
>
#onnH%loseKLO
?
return departamentosO
?
?
Pgina ' de 5
'. 0#ra clase necesariaJ para poder desarrollar el mL#odo an#erior es la clase
H+epar#amen#o.csIJ es#a clase con#endr las propiedades 5 mL#odos necesarios
para crear el obje#o H+epar#amen#oI con "ue se llenar la lis#a.
Puede ;er es#a clase en el pro5ec#o H+1E((5 Acceso a +a#osI.
5. Por Nl#imoJ la clase H1apa+eNegociosIJ simula un componen#e de negociosJ en es#e
caso 5 para simpli?icar el ejemploJ no se aplican reglas de ;alidaci&nJ o propias del
negocioJ solo se in;ocan los mL#odos del componen#e de acceso a da#os.
-os accesos se reali/an por medio de la clase HAcceso+a#os.csIJ "ue simula una
capa de da#osJ 5 u#ili/a la clase +epar#amen#oJ 5a "ue es con obje#os de es#e #ipo
en los "ue se basa el ejercicio.
-os mL#odos ms impor#an#es de la capa de negociosJ con#ra los "ue se enla/aran
los da#os en los con#roles son los siguien#es8
'("NE$
Pu;li# !un#tion C;tenerDepartamentosPorGrupoK"+Val grupo As *tringL As =istK of
DepartamentoL
NDefinir + agregar las reglas de nego#io
Dim ad As A##esoDatos = ,ew A##esoDatos
eturn adHC;tenerDepartamentosKgrupoL
'nd !un#tion
C)
pu;li# =ist<Departamento> C;tenerDepartamentosPorGrupoKstring grupoL
>
77Definir + agregar reglas de nego#io
A##esoDatos ad = new A##esoDatosKLO
return adHC;tenerDepartamentosKgrupoLO
?
,. Qna ;e/ armadas las $ clasesJ agregue un nue;o Web Form en el Solu#ion E6plorer
5 llmelo HDindingToDusiness-a5erI.
1on ASP.NET .( puede #ambiLn arras#rar 5 pegar los con#roles en la solapa
HSourceIJ en#oncesJ desde la solapa HSourceI incorpore un con#rol H-abelIJ un
con#rol H+rop+o*n-is#I 5 un con#rol HGrid)ie*I.

En el ejercicio reselto! se esta trabajando con na p"#ina maestra $ temas! para
mantener na inter%a& ni%orme! adem"s previamente a la incorporaci'n de los
controles se incorporo na tabla de (tml para darle la estrctra a la p"#ina) En la
porci'n de c'di#o copiada a*+! no se incl$en comentarios)
,ara ver la versi'n completa con comentarios! vea el ejercicio DCE2005 Acceso a
Datos! la clase -indin#.o-sinessLa$er)asp/I
Pgina '$ de 5
1on la u#ili/aci&n del #ema a ni;el de aplicaci&nJ el c&digo =#ml "ueda ms limpioJ 5a
"ue no es necesario incluir propiedades de es#ilo >5 compor#amien#oF en el =#ml8
+SP "NE$
<ta;le>
<tr>
<td>
<asp:=a;el ID="l;lGrupo" runat="server" %ss%lass="=a;el" >
*ele##ione un grupo:<7asp:=a;el>
<7td>
<td align=left widt.="(0@">
<asp:DropDown=ist ID="#m;Grupos" runat="server"
%ss%lass="Te/t" DataSourceID="ds*rupos"
AutoPost"a#$="true">
<7asp:DropDown=ist><;r 7>
<7td>
<7tr>
<tr .eig.t="45p/"><td><7td><7tr>
<tr>
<td #olspan="1" align=#enter>
<asp:GridView ID="drDepartamentos" runat="server"
DataSourceID="dsDepartamentos"
+uto*enerateColumns="&alse">
<%olumns>
<asp:"ound!ield 3eaderTe/t="%odigo"
Data,ield="DepartamentoID"
Item*t+le93ori:ontalAlign="rig.t" 7>
<asp:"ound!ield 3eaderTe/t="Departamento"
Data,ield=",om;re"
Item*t+le93ori:ontalAlign="=eft" 7>
<asp:"ound!ield 3eaderTe/t="Grupo" Data!ield="Grupo"
Item*t+le93ori:ontalAlign="=eft" 7>
<asp:"ound!ield 3eaderTe/t="!e#.a"
Data,ield="!e#.a<odifi#a#ion"
Item*t+le93ori:ontalAlign="rig.t" 7>
<7%olumns>
<7asp:GridView>
<7td>
<7tr>
<7ta;le>
0bser;e "ue al no permi#ir "ue la grilla Hau#o genere las columnasI >propiedad8
Auto"enerateColumns-./alse.FJ =a5 "ue de?inir e6pl7ci#amen#e cada columna a
mos#rar.
-a propiedad Data*ieldJ =ace re?erencia al campo "ue de;uel;e la consul#a a la base
de da#osJ enla/ando la in?ormaci&n a mos#rar en cada columna.
.. -as ?uen#es de da#os u#ili/adas en el ejercicioJ ?ueron incorporadas del ToolDo6J 5
con?iguradas como sigue8
+SP "NE$
Pgina '' de 5
<S99%ontrol Datasour#e para llenar la grilla de departamentosH Mediante el
parametro se indica la relacion entre el combo y la grilla99>
<asp:C;Te#tData*our#e ID="dsDepartamentos" runat=server
$peName="Departamentos"CapaDeNegocio"
Select-et#od="./tenerDepartamentosPor*rupo"
Data./0ect$peName="Departamentos"Departamento">
<*ele#tParameters>
<asp:%ontrolParameter DefaultValue="Uualit+ Assuran#e"
,ame="grupo" T+pe="*tring" %ontrolID="#m;Grupos"
Propert+,ame="*ele#tedValue" 7>
<7*ele#tParameters>
<7asp:C;Te#tData*our#e>
<S99 %ontrol Datasour#e para llenar el #om;o de grupos 99>
<asp:C;Te#tData*our#e ID="ds*rupos" runat="server"
T+pe,ame="DepartamentosH%apaDe,ego#io" *ele#t<et.od="C;tenerGrupos">
<7asp:C;Te#tData*our#e>

C. Puede ;er el c&digo comple#o en el ejercicio an#es mencionadoJ el resul#ado es el
siguien#e8
Tenga en cuen#a "ue en la ;is#a de diseKoJ median#e el smar# #ag puede con?igurar el
con#rol H0bjec#+a#aSourceI seleccionando la clase de la capa de negociosJ 5 los mL#odos
para reali/ar el enlace de da#os a los con#rolesJ de manera similar al ejercicio an#erior.
Pgina '5 de 5
REE#IE0 1 23+
%&'eti(o) +e?inir un arc=i;o W9- 5 u#ili/arlo como ?uen#e de da#os para un
con#rol Tree)ie*.
N%A8 -a serie de pasos u#ili/ada en la resoluci&n del presen#e ejercicio no necesariamen#e re?leja las
mejores prc#icas de +esarrollo 5 Ar"ui#ec#ura de aplicaciones empresariales es#ablecidas por 9icroso?#.
1. En el Solu#ion E6plorerJ agregue un nue;o 7#em de #ipo W9- File llamado m5W9-
con la siguien#e es#ruc#ura.
<V/ml version="1H5" en#oding="utf9(" V>
<#olle#tion>
<;oo$>
<title>aspH,'T<7title>
<aut.or>dino esposito<7aut.or>
<pu;lis.er>ms press<7pu;lis.er>
<7;oo$>
<;oo$>
<title>s2l reporting servi#es<7title>
<aut.or>tom #ruise<7aut.or>
<pu;lis.er>ms press<7pu;lis.er>
<7;oo$>
<7#olle#tion>
. Agregue un nue;o Web Form. Arras#re el con#rol Tree)ie* =acia el ?ormulario 5
asocie como ?uen#e de da#os el arc=i;o W9- creado an#eriormen#e.
Pgina ', de 5
$. +e?ina un Au#o Forma# segNn la opci&n para presen#ar los da#os jerr"uicos de
manera ;iable.
Pgina '. de 5
Pgina 'C de 5
REE#IE0 1 DataAda4ter
%&'eti(o) Escribir un c&digo "ue leer una #abla en el banco de da#osJ
1ons#ruir un +a#aAdap#er 5 comple#ar un con#rol Tree)ie*.
N%A8 -a serie de pasos u#ili/ada en la resoluci&n del presen#e ejercicio no necesariamen#e re?leja las
mejores prc#icas de +esarrollo 5 Ar"ui#ec#ura de aplicaciones empresariales es#ablecidas por 9icroso?#.
1. En el Solu#ion E6plorerJ Agregue un nue;o ?ormulario con#eniendo un con#rol
Tree)ie*.
1omo escribiremos el c&digo direc#amen#e en el 4T9-J en el pie de pginaJ =aga
clicG en el bo#&n 4T9- 5 escriba el siguien#e c&digo "ue leer dos #ablas
>1a#egories 5 Produc#sF de la base de da#os Nor#=*indJ cons#ruir en memoria una
relaci&n en#re las cla;es 5 lo usar como ?uen#e de da#os para cons#ruir el con#rol
Tree)ie*. 1omo es#e con#rol re"uiere da#os jerr"uicosJ en#onces cons#ruiremos un
ni;el con las ca#egor7as 5 o#ro ni;el con los produc#os de las respec#i;as ca#egor7as.
'("NE$
<@I Page =anguage="V"" @>
<@I Import ,amespa#e="*+stemHData" @>
<@I Import ,amespa#e="*+stemHDataH*2l%lient" @>
<s#ript runat="server">
Dim #one/ao As *tring = "*erver=lo#al.ostOData;ase=,ort.windOuser id=sa"
*u; PageJ=oadKL
If ,ot PageHIsPost"a#$ T.en
,illNodesKL
'nd If
'nd *u;
*u; ,illNodesKL
Dim ds As Data*et = GetDataKL
!or 'a#. masterow As Dataow In dsHTa;lesK"%ategories"LHows
Dim master,ode As ,ew Tree,odeKmasterowK"%ategor+,ame"LHTo*tringKLL
Pgina '2 de 5
TreeView1H,odesHAddKmaster,odeL
!or 'a#. #.ildow As Dataow In masterowHGet%.ildowsK"%.ildren"L
Dim #.ild,ode As ,ew Tree,odeK#.ildowK"Produ#t,ame"LHTo*tringKLL
master,odeH%.ild,odesHAddK#.ild,odeL
,e/t
,e/t
'nd *u;
!un#tion *etDataKL As Data*et
Dim #onn As *2l%onne#tion = ,ew *2l%onne#tionK#one/aoL
Dim s2l%at As *tring = "*'='%T %ategor+IDG %ategor+,ame !C< %ategories"
Dim s2lProd As *tring = "*'='%T %ategor+IDG Produ#t,ame !C< Produ#ts"
Dim da%at As *2lDataAdapter = ,ew *2lDataAdapterKs2l%atG #onnL
Dim daProd As *2lDataAdapter = ,ew *2lDataAdapterKs2lProdG #onnL
Dim ds As Data*et = ,ew Data*etKL
da%atH!illKdsG "%ategories"L
daProdH!illKdsG "Produ#ts"L
dsHelationsHAddK"%.ildren"G J
dsHTa;lesK"%ategories"LH%olumnsK"%ategor+ID"LG J
dsHTa;lesK"Produ#ts"LH%olumnsK"%ategor+ID"LL
eturn ds
'nd !un#tion

<7s#ript>
C)
<@I Page =anguage="%&" @>
<@I Import ,amespa#e="*+stemHData" @>
Pgina 5( de 5
<@I Import ,amespa#e="*+stemHDataH*2l%lient" @>
<s#ript runat="server">
#onst string #onn*tring = "*erver=lo#al.ostOData;ase=,ort.windOuser id=sa"O
void PageJ=oadKL
>
if KS PageHIsPost"a#$L
,illNodesKLO
?
void ,illNodesKL
>
Data*et dst = GetDataKLO
forea#. KDataow masterow in dstHTa;lesE"%ategories"FHowsL
>
Tree,ode master,ode = new
Tree,odeKKstringLmasterowE"%ategor+,ame"FLO
TreeView1H,odesHAddKmaster,odeLO
forea#. KDataow #.ildow in masterowHGet%.ildowsK"%.ildren"LL
>
Tree,ode #.ild,ode = new
Tree,odeKKstringL#.ildowE"Produ#t,ame"FLO
master,odeH%.ild,odesHAddK#.ild,odeLO
?
?
1
Data*et *etDataKL
>
Pgina 51 de 5
*2l%onne#tion #onn = new *2l%onne#tionK#onn*tringLO
string s2l%at = "*ele#t %ategor+IDG %ategor+,ame !C< %ategories"O
string s2lProd = "*ele#t %ategor+IDG Produ#t,ame !C< Produ#ts"O
*2lDataAdapter da%at = new *2lDataAdapterKs2l%atG #onnLO
*2lDataAdapter daProd = new *2lDataAdapterKs2lProdG #onnLO
Data*et ds = new Data*etKLO
da%atH!illKdsG "%ategories"LO
daProdH!illKdsG "Produ#ts"LO
dsHelationsHAddK"%.ildren"G
dsHTa;lesE"%ategories"FH%olumnsE"%ategor+ID"FG
dsHTa;lesE"Produ#ts"FH%olumnsE"%ategor+ID"FLO
return dsO
?
<7s#ript>

Pgina 5 de 5

También podría gustarte