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
Excel para principiantes: Aprenda a utilizar Excel 2016, incluyendo una introducción a fórmulas, funciones, gráficos, cuadros, macros, modelado, informes, estadísticas, Excel Power Query y más
Inteligencia artificial: Lo que usted necesita saber sobre el aprendizaje automático, robótica, aprendizaje profundo, Internet de las cosas, redes neuronales, y nuestro futuro
Ciberseguridad: Una Simple Guía para Principiantes sobre Ciberseguridad, Redes Informáticas y Cómo Protegerse del Hacking en Forma de Phishing, Malware, Ransomware e Ingeniería Social