You are on page 1of 17

UNIVERSIDAD TECNICA DE AMBATO UNIVERSIDAD TECNICA DE AMBATO

FACULTAD DE INGENIERIA EN SISTEMAS FACULTAD DE INGENIERIA EN SISTEMAS


DESARROLLO DE SOFTWARE III
DESARROLLO DE SOFTWARE III
MARZO 2013 AGOSTO 2013
MARZO 2013 AGOSTO 2013
Universi! T"#ni#! e A$%!&' In() C)F)A)F
F!#*+&! e In(enier,! en Sis&e$!s S"-&i$' .Sis&e$!s/
ADONET-CAPAS ADONET-CAPAS
Laboratorio #: 01 - (1)
E0er#i#i' 12 1
F'r$*+!ri' e $!n&eni$ien&'3 *&i+i4!n' +!s DLL2
B*sinessO%0e#&s3 D!&!A##essL!5er3 en +! #!-! e
-resen&!#i6n ' #!-! e *s*!ri' #'n -+!&!7'r$! We%)
NOTA2
El laboratorio trabaja con la base de datos MMABOO8S por lo tanto debe hacer lo
siguiente antes de empezar.
1.- Anexar la base de datos MMABOO8S.
2.- Ejecutar los s&'re -r'#e*res necesarios.
Tanto la base de datos MMABOO! como los stored procedures lo encontrar"
dentro de los archi#os proporcionados.
1. Abra la solucin Sistemas clientes, en el explorador de soluciones establezca como proyecto de
inicio el llamado WebPresentationLayer, dentro de este proyecto abra el formulario
ListaEstados.aspx. Este permitir realizar varias tareas como: exponer los datos de la tabla States,
paginar y ordenar los datos visualizados, as como actualizar, cancelar y eliminar un registro.
2. Lo primero ser recuperar los datos de la tabla States y vincularlos al Gridie!, para esto digite el
cdigo mostrado a continuacin en el mane"ador para el evento Load de la pgina.
Des!rr'++' e S'7&9!re III :;(in!2
2
Universi! T"#ni#! e A$%!&' In() C)F)A)F
F!#*+&! e In(enier,! en Sis&e$!s S"-&i$' .Sis&e$!s/
protected void #age$Load%ob"ect sender, Event&rgs e'
(
if %)*s#ost+ac,'
incularGridie!%'-
.
$. Cree una regin llamada Mtodos en el formulario y escriba el cdigo para el m/todo
VincularridVie!.
0region 1etodos
222 3summary4
222 5ecuperar los datos y vincularlos al Gridie!.
222 32summary4
private void incularGridie!%'
(
22*nstanciar ob"etos necesarios para recuperar datos.
6tates7&L states7&L 8 ne! 6tates7&L%'-
try
(
225ecuperar datos y vincualarlos al Gridie!.
gv6tates.7ata6ource 8 states7&L.6elect%9p$select$states9'-
gv6tates.7ata+ind%'-
.
catc: %Exception excepcion'
(
22;ratar y administrar excepciones.
lbl1ensa"e.;ext 8 excepcion.1essage-
.
finally
(
22Liberar recursos.
states7&L 8 null-
.
.
0endregion
%. <o se olvide de las referencias a las libreras necesarias.
using 6ystem-
using 6ystem.=ollections.Generic-
using 6ystem.Lin>-
using 6ystem.?eb-
using 6ystem.?eb.@*-
using 6ystem.?eb.@*.?eb=ontrols-
using 6ystem.7ata-
using 61=.+usinessAb"ects-
using 61=.7ata&ccessLayer-
using 6ystem.7ata.6>l=lient-
Des!rr'++' e S'7&9!re III :;(in!2
"
Universi! T"#ni#! e A$%!&' In() C)F)A)F
F!#*+&! e In(enier,! en Sis&e$!s S"-&i$' .Sis&e$!s/
&. =ompile y e"ecute la aplicacin. Los datos deberan mostrarse en el formulario.
PA#$AC#%$
'. El Gridie! permite paginar los datos >ue expone para optimizar el rendimiento. #ara esto
seleccione el ridVie! y modifi>ue las siguientes propiedades.
P&'P#E(A( VAL'&
&llo!#aging true
#age6ize B
(. En la ventana de propiedades del Gridie! genere el controlador para el evento
Page#ndexC)anging.
). (igite el siguiente cdigo para completar la paginaci*n del Gridie!.
222 3summary4
222 6e dispara cuando se :ace un clic sobre los numeros de enlaces de la pgina.
222 32summary4
222 3param name89sender9432param4
222 3param name89e9432param4
protected void gv6tates$#age*ndex=:anging%ob"ect sender, Gridie!#ageEvent&rgs e'
(
22Abtener el nuevo indice de la pagina >ue se va a
22mostrar en el Gridie!.
gv6tates.#age*ndex 8 e.<e!#age*ndex-

225efrescar los datos.
incularGridie!%'-
.
Des!rr'++' e S'7&9!re III :;(in!2
+
Universi! T"#ni#! e A$%!&' In() C)F)A)F
F!#*+&! e In(enier,! en Sis&e$!s S"-&i$' .Sis&e$!s/
'&(E$AC#%$
*. El Gridie! tambi/n permite ordenar los datos al :acer un clic sobre el encabezado de una columna.
#ara esto modi,i-ue las siguientes propiedades del ridVie!.
P&'P#E(A( VAL'&
&llo!6orting ;rue
1+. En la ventana de propiedades del Gridie! genere el mane"ador para el evento Sorting.
11. 7igite el cdigo >ue permitir ordenar los datos por alguna columna, sea de forma ascendente o
descendente.
222 3summary4
222 6e dispara cuando se :ace un clic sobre el encabezado de las columnas.
222 32summary4
222 3param name89sender9432param4
222 3param name89e9432param4
protected void gv6tates$6orting%ob"ect sender, Gridie!6ortEvent&rgs e'
(
22*nstanciar los ob"etos para ordenar los datos.
7ata;able data;able 8 ne! 7ata;able%'-
6tates7&L states7&L 8 ne! 6tates7&L%'-
225ecuperar los datos.
data;able 8 states7&L.6elect%9p$select$states9'-
22=omprobar >ue :ay datos recuperados.
if %data;able )8 null'
(
22=rear un 7ataie! para ordenar datos.
7ataie! dataie! 8 ne! 7ataie!%data;able'-
22Establecer el criterio de ordenamiento.
dataie!.6ort 8 GetExpresion7eArdenamiento%e'-
221ostrar los datos ordenados.
gv6tates.7ata6ource 8 dataie!-
gv6tates.7ata+ind%'-
.
.
Des!rr'++' e S'7&9!re III :;(in!2
.
Universi! T"#ni#! e A$%!&' In() C)F)A)F
F!#*+&! e In(enier,! en Sis&e$!s S"-&i$' .Sis&e$!s/
12. En la regin Metodos, digite el cdigo del m/todo etExpresion(e'rdenamiento%' utilizada
anteriormente.
222 3summary4
222 Abtener la expresion de ordenamiento para el Gridie!.
222 32summary4
222 3param name89e9432param4
222 3returns432returns4
private string GetExpresion7eArdenamiento%Gridie!6ortEvent&rgs e'
(
string direccionArdenamiento 8 string.Empty-

226i se :ace clic sobre la misma columna dos veces entonces cambiar la direccion
22de ordenamiento, caso contrario cambiarlo a &6=E<7E<;E.
22=omprobar si se creo la variable de tipo ie!6tate.
if %ie!6tateC9Expresion9D )8 null'
(
226i lo >ue contiene la variable ie!6tate: Expresion es igual a lo
22>ue contiene el Gridie!.
if %)ie!6tateC9Expresion9D.;o6tring%'.E>uals%e.6ortExpression.;oLo!er%'''
(
22Eliminar el contenido de la variable.
ie!6tateC97ireccion9D 8 null-
.
.
22=omprobar si se creo la variable de tipo ie!6tate.
if %ie!6tateC97ireccion9D )8 null'
(
22=omprobar si se :izo un ordenamiento 9&6=E<7E<;E9.
if %ie!6tateC97ireccion9D.;o6tring%'.E>uals%9&6=9''
(
22=ambiar la direccion de ordenamiento.
direccionArdenamiento 8 97E6=9-
22&lmacenar la direccion de ordenamiento.
ie!6tateC97ireccion9D 8 97E6=9-
.
else
(
22=ambiar la direccion de ordenamiento.
direccionArdenamiento 8 9&6=9-
22&lmacenar la direccion de ordenamiento.
ie!6tateC97ireccion9D 8 9&6=9-
.
.
else
(
22&lmacenar la direccion de ordenamiento.
ie!6tateC97ireccion9D 8 9&6=9-
.
22Guadar la expresion de ordenamiento en el ie!6tate.
ie!6tateC9Expresion9D 8 e.6ortExpression.;oLo!er%'-
2225egresar el criterio de ordenamiento: columna y direccion.
return e.6ortExpression E 9 9 E direccionArdenamiento-
.
Des!rr'++' e S'7&9!re III :;(in!2
/
Universi! T"#ni#! e A$%!&' In() C)F)A)F
F!#*+&! e In(enier,! en Sis&e$!s S"-&i$' .Sis&e$!s/
1$. =ompile y e"ecute la aplicacin., pruebe a ordenar los datos por alguna columna del Gridie! en el
formulario.
MA$0E$#M#E$0'
1%. #ara realizar el mantenimiento del formulario modi,i-ue las siguientes propiedades del ridVie!.
P&'P#E(A( VAL'&
&utoGenerate=olumns False
&utoGenerateEdit+utton ;rue
7ataGey<ames 6tate=ode
1&. En el ridVie!, presione clic derec)o y seleccione Editar columnasH
Des!rr'++' e S'7&9!re III :;(in!2
1
Universi! T"#ni#! e A$%!&' In() C)F)A)F
F!#*+&! e In(enier,! en Sis&e$!s S"-&i$' .Sis&e$!s/
1'. 7e la lista: Campos disponibles mostrada en el formulario anterior, agregue un campo
0emplate2ield :acia la lista: Campos seleccionados, mar>ue el campo aIadido y cambie las
siguientes propiedades y sus valores.
P&'P#E(A( VAL'&
Jeader;ext =digo
6ortExpression 6tate=ode
Esto permitir agregar una columna para visualizar datos del campo StateCode en el Gridie!, as como
su ordenamiento.
1(. 5epita el proceso anterior para la columna State$ame y cambie las siguientes propiedades.
P&'P#E(A( VAL'&
Jeader;ext <ombre
6ortExpression 6tate<ame
1). &:ora en el ridVie! se agregar un encabezado de una columna para >ue el Gridie! permita
eliminar una fila seleccionada. #ara esto repita el proceso anterior y solo cambie la propiedad
indicada a continuacin.
P&'P#E(A( VAL'&
Jeader;ext EliminarK
1*. Las propiedades del Gridie! debera tener el siguiente aspecto.
Des!rr'++' e S'7&9!re III :;(in!2
3
Universi! T"#ni#! e A$%!&' In() C)F)A)F
F!#*+&! e In(enier,! en Sis&e$!s S"-&i$' .Sis&e$!s/
$'0A4
#ero esto no es suficiente para editar y actualizar los registros del Gridie!, esto solo
permite mostrar los datos recuperados.
#ara >ue el Gridie! permita la edicin procedemos de la siguiente forma.
2+. 6obre el Gridie! presione clic derec)o y seleccione: Editar plantillas como se muestra en la
siguiente figura.
Des!rr'++' e S'7&9!re III :;(in!2
5
Universi! T"#ni#! e A$%!&' In() C)F)A)F
F!#*+&! e In(enier,! en Sis&e$!s S"-&i$' .Sis&e$!s/
21. 7e la lista: 0areas de ridVie! seleccione la columna Column6789Codigo, creada en el tem
anterior.
22. En: Edit#tem0emplate, podemos poner los controles o J;1L >ue necesitemos. En nuestro caso del
Cuadro de :erramientas agregue un 0ext;ox, esto permitir editar el campo: StateCode, y le
damos un nombre.
P&'P#E(A( VAL'&
*d txt6tate=ode
2$. 6eleccione el 0ext;ox agregado y en la lista 0areas 0ext;ox presione sobre Editar enlace de
datosHEsto muestra una ventana donde podemos vincular las propiedades a datos.
2%. Mar-ue la propiedad 0ext y digite: E<al =>StateCode?@, lo >ue permitir asociar el 0ext;ox con el
campo StateCode de la tabla States.
Des!rr'++' e S'7&9!re III :;(in!2
A7
Universi! T"#ni#! e A$%!&' In() C)F)A)F
F!#*+&! e In(enier,! en Sis&e$!s S"-&i$' .Sis&e$!s/
2&. En el dialogo anterior de muestra mos la vinculacin de la propiedad: 0ext con la expresion
mostrada.
2'. &epetimos el proceso para la columna: State$ame con los siguientes cambios.
P&'P#E(A( VAL'&
*d txt6tate<ame
2(. #ara poner los <alores de las filas en las columnas tenemos >ue editar la plantilla: #tem0emplate de
la columna adicionada. #ara esto abra la ventana de cdigo y modifi>ue el cdigo J;1L para >ue se
muestre de la siguiente forma.
3asp:;emplateField Jeader;ext89=odigo9 6ortExpression896tate=ode94
3Edit*tem;emplate4
3asp:;ext+ox *789txt6tate=ode9 runat89server9 ;ext8L3M0 Eval%96tate=ode9'
M4L432asp:;ext+ox4
32Edit*tem;emplate4
3*tem;emplate4
BCD E<al=EStateCodeE@CF
32*tem;emplate4
32asp:;emplateField4
3asp:;emplateField Jeader;ext89<ombre9 6ortExpression896tate<ame94
3Edit*tem;emplate4
3asp:;ext+ox *789txt6tate<ame9 runat89server9 ;ext8L3M0 Eval%96tate<ame9'
M4L432asp:;ext+ox4
32Edit*tem;emplate4
Des!rr'++' e S'7&9!re III :;(in!2
AA
Universi! T"#ni#! e A$%!&' In() C)F)A)F
F!#*+&! e In(enier,! en Sis&e$!s S"-&i$' .Sis&e$!s/
3*tem;emplate4
BCD E<al=EState$ameE@CF
32*tem;emplate4
32asp:;emplateField4
32=olumns4
2). El caso de la columna EliminarG es especial, #ara agregar el enlace: Eliminar, o lo >ue deseemos
procedemos de la siguiente forma. 6eleccione Editar pantillas la lista emergente del Gridie! de la
lista escogemos Columna6289EliminarG.
2*. En la pantilla: #tem0emplate, arrastramos un control: LinH;utton. 1odi>ue las
siguientes propiedades del Lin,+utton.
P&'P#E(A( VAL'&
*d l,bEliminar
=ommand<ame Eliminar
;ext Eliminar
$'0A4
1uc:as veces resulta ms conveniente :acer ciertas cosas en la <entana de c*digo
J;1L en lugar de :acerlo en la <entana de propiedades.
Des!rr'++' e S'7&9!re III :;(in!2
A2
Universi! T"#ni#! e A$%!&' In() C)F)A)F
F!#*+&! e In(enier,! en Sis&e$!s S"-&i$' .Sis&e$!s/
$+. #ara >ue al presionar el enlace Eliminar creado con un LinH;utton se muestre un mensa"e de
confirmacin mediante Ia<ascript, :ay >ue editar el #tem0emplate del EliminarG, de la
siguiente manera.
<A;&: La propiedad =ommand<ame tiene un error. Encuentre el error para >ue
funcione el eliminar.
AC0JAL#KA&
$1. El la listas de eventos del ridVie! genere el mane"ador para el evento &o!Jpdating :aciendo
doble clic sobre este. En este digite el cdigo para guardar los cambios realizados en la fila actual.

222 3summary4
222 6e dispara cuando el boton: &ctualizar es presionado.
222 32summary4
222 3param name89sender9432param4
222 3param name89e9432param4
protected void gv6tates$5o!@pdating%ob"ect sender, Gridie!@pdateEvent&rgs e'
(
22Abtener la clave primaria de la fila actualmente siendo editada.
string state=ode 8 gv6tates.7ataGeysCe.5o!*ndexD.alue.;o6tring%'-
Des!rr'++' e S'7&9!re III :;(in!2
A"
Universi! T"#ni#! e A$%!&' In() C)F)A)F
F!#*+&! e In(enier,! en Sis&e$!s S"-&i$' .Sis&e$!s/
22Abtener la fila de la tabla: 6tates >ue esta vinculada
22al Gridie! para editarla.
Gridie!5o! fila 8 gv6tates.5o!sCe.5o!*ndexD-
22+uscar los controles, convertirlos a ;ext+ox para poder
22editarlos.
;ext+ox state;ext+ox 8 %;ext+ox'fila.Find=ontrol%9txt6tate=ode9'-
;ext+ox state<ame;ext+ox 8 %;ext+ox'fila.Find=ontrol%9txt6tate<ame9'-
22*nstanciar ob"etos necesarios para actualizar.
6tates7&L states7&L 8 ne! 6tates7&L%'-
6tate state 8 ne! 6tate%'-
try
(
22=onfigurar los valores para la fila editada.
state.6tate=ode 8 state=ode-
state.6tate<ame 8 state<ame;ext+ox.;ext-
22&ctualizar el registro.
bool se&ctualizo 8 states7&L.@pdate%state, 9p$update$states9'-
if %se&ctualizo 88 true'
lbl1ensa"e.;ext 8 95egistro actualizado correctamente9-
else
lbl1ensa"e.;ext 8 9<o se pudo actualizar el registro9-
.
catc: %Exception excepcion'
(
22;ratar y administrar excepciones.
lbl1ensa"e.;ext 8 excepcion.1essage-
.
finally
(
22Liberar recursos.
state 8 null-
states7&L 8 null-
.
22<o establecer ningun indice para la edicion.
gv6tates.Edit*ndex 8 NO-
225efrescar la Gridie!.
incularGridie!%'-
.
CA$CELA&
$2. 5epita el proceso anterior para el evento: &o!CancelingEdit. 7igite el cdigo necesario para
cancelar los cambios realizados en la fila actual.
222 3summary4
222 6e dispara cuando el boton: =ancelar es presionado.
222 32summary4
222 3param name89sender9432param4
222 3param name89e9432param4
Des!rr'++' e S'7&9!re III :;(in!2
A+
Universi! T"#ni#! e A$%!&' In() C)F)A)F
F!#*+&! e In(enier,! en Sis&e$!s S"-&i$' .Sis&e$!s/
protected void gv6tates$5o!=ancelingEdit%ob"ect sender, Gridie!=ancelEditEvent&rgs e'
(
22<o establecer ningun indice para la edicion.
gv6tates.Edit*ndex 8 NO-
225ecuperar los datos de la fila actual.
227e lo contrario sale vacia.
incularGridie!%'-
.
EL#M#$A&
$$. =ree el mane"ador para el evento: &o!(eleting. Escriba el cdigo para eliminar el registro marcado.
222 3summary4
222 6e dispara cuando el boton: Eliminar es presionado.
222 32summary4
222 3param name89sender9432param4
222 3param name89e9432param4
protected void gv6tates$5o!7eleting%ob"ect sender, Gridie!7eleteEvent&rgs e'
(
22Abtener la clave primaria de la fila actualmente seleccionada para eliminar.
string state=ode 8 gv6tates.7ataGeysCe.5o!*ndexD.alue.;o6tring%'-
22*nstanciar ob"etos necesarios para eliminar.
6tates7&L states7&L 8 ne! 6tates7&L%'-

try
(
22Eliminar el registro.
bool seElimino 8 states7&L.7elete%state=ode, 9p$delete$states9'-
if %seElimino 88 true'
lbl1ensa"e.;ext 8 95egistro eliminado correctamente9-
else
lbl1ensa"e.;ext 8 9<o se pudo eliminar el registro9-
.
catc: %Exception excepcion'
(
22;ratar y administrar excepciones.
lbl1ensa"e.;ext 8 excepcion.1essage-
.
finally
(
22Liberar recursos.
states7&L 8 null-
.
22<o establecer ningun indice para la edicion.
gv6tates.Edit*ndex 8 NO-
225efrescar la Gridie!.
incularGridie!%'-
.
Des!rr'++' e S'7&9!re III :;(in!2
A.
Universi! T"#ni#! e A$%!&' In() C)F)A)F
F!#*+&! e In(enier,! en Sis&e$!s S"-&i$' .Sis&e$!s/
#$SE&0A&
$%. El ob"eto ridVie! no permite crear registros dentro del control, por lo tanto :ay >ue buscar la
forma de :acerlo, una forma de insertar nuevos registros podra ser utilizar un control 2ormVie!,
otra crear un nuevo control Gridie! >ue :erede del control Gridie! el cual permita insertar dentro
del control, o tambi/n crear controles individuales para agregar un nuevo registro. Estas son solo
varias opciones de las existentes. En este caso se crear un nuevo formulario >ue permita insertar un
nuevo registro, aun>ue se lo podra :acer en el mismo formulario %aun>ue esto no es recomendable'
$&. #ara esto abra el formulario ?eb AdicionarEstado.aspx.
$'. &:ora se crear el cdigo necesario para agregar un nuevo registro. enere el mane"ador para el
evento clic del botn uardar, a>u digite el siguiente cdigo.
222 3summary4
222 &Iade un registro en la base de datos.
222 32summary4
222 3param name89sender9432param4
222 3param name89e9432param4
protected void btnGuardar$=lic,%ob"ect sender, Event&rgs e'
(
22=omprobar >ue todos los controles :ayan pasado la validacin.
if %)#age.*salid'
return-
bool se*nserto 8 false-
22Los controles pasaron la validacin, por tanto insertar registros.

22*nstanciar los ob"etos para insertar.
6tates7&L states7&L 8 ne! 6tates7&L%'-
6tate state 8 ne! 6tate%'-
try
(
Des!rr'++' e S'7&9!re III :;(in!2
A/
Universi! T"#ni#! e A$%!&' In() C)F)A)F
F!#*+&! e In(enier,! en Sis&e$!s S"-&i$' .Sis&e$!s/
22=onfigurar las propiedades del ob"eto.
state.6tate=ode 8 txt=odigo.;ext-
state.6tate<ame 8 txt<ombre.;ext-
22*nsertar el registro.
se*nserto 8 states7&L.*nsert%state, 9p$insert$states9'-
if %se*nserto 88 true'
lbl1ensa"e.;ext 8 9<uevo registro insertado correctamente9-
.
catc: %Exception excepcion'
(
22;ratar y administrar excepciones.
lbl1ensa"e.;ext 8 excepcion.1essage-
.
finally
(
22Liberar recursos.
state 8 null-
states7&L 8 null-
.
.
$(. Finalmente genere y eIecute la aplicacin y pruebe >ue todo funcione correctamente.
Ejercicios propuestos
1. Al actualizar un registro, lo l-gico es n' -er$i&ir .ue se pueda cambiar
la #+!ve -ri$!ri!, modi/i.ue el c-digo para .ue esta condici-n se
cumpla.
2. Modi/i.ue el c-digo para .ue al presionar en el enlace Ai#i'n!r
es&!' del /ormulario F'r$!Es&!')!s-< se muestre el /ormulario
Ai#i'n!rEs&!')!s-<, este se despliegue con una ven&!n!
e$er(en&e 0-'-=*-1 2 cuando se inserte un registro en este /ormulario
0la tupla insertada1 se muestre en el 3rid4ie5 del /ormulario
F'r$!Es&!')!s-< como sucede en una aplicaci-n 6indo5s.
$. 7uando se hace una actualizaci-n en el GriVie9, deber8a realizarse
las correspondientes v!+i!#i'nes donde sea necesario.
%. 9epita el ejercicio para la tabla C*s&'$ers, esta tabla se relaciona con
la tabla S&!&es, por lo tanto se deber8a mostrar un C'$%'B'< para
desplegar los datos del campo S&!&e al Actualizar un registro 0O una
#entana de b:s.ueda inteligente, como en 6indo5s ;orms1.
Des!rr'++' e S'7&9!re III :;(in!2
A1

You might also like