<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Marketing online, desarrollo de software a medida desde la vista de un empresario</title>
	<atom:link href="http://aplicacioneswebonline.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://aplicacioneswebonline.wordpress.com</link>
	<description>Publicidad online, campañas de posicionamiento web, Desarrollo de aplicaciones web, aplicaciones de software a medida, Diseño Gráfico</description>
	<lastBuildDate>Mon, 31 Aug 2009 12:47:10 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='aplicacioneswebonline.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/e703f24514cdf957e3f0095c25b6552b?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Marketing online, desarrollo de software a medida desde la vista de un empresario</title>
		<link>http://aplicacioneswebonline.wordpress.com</link>
	</image>
			<item>
		<title>Marketing de proximidad, publicidad por bluetooh</title>
		<link>http://aplicacioneswebonline.wordpress.com/2009/08/25/marketing-de-proximidad-publicidad-por-bluetooh/</link>
		<comments>http://aplicacioneswebonline.wordpress.com/2009/08/25/marketing-de-proximidad-publicidad-por-bluetooh/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 22:25:01 +0000</pubDate>
		<dc:creator>makinsc</dc:creator>
				<category><![CDATA[Noticias de Tecnología]]></category>
		<category><![CDATA[marketing de proximidad]]></category>
		<category><![CDATA[publicidad por bluetooth]]></category>

		<guid isPermaLink="false">http://aplicacioneswebonline.wordpress.com/?p=47</guid>
		<description><![CDATA[Buenas amigos hoy vengo a comentaros una tecnología que me parece bastante interesante para todos aquellos empresarios y comerciantes. Se trata del llamado márketing de proximidad o publicidad por bluetooth que es una nueva forma de publicidad electrónica.
Consiste en mandar publicidad en un radio de unos 45-50 m a través de un servidor de bluetooth a todos [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aplicacioneswebonline.wordpress.com&blog=3928443&post=47&subd=aplicacioneswebonline&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Buenas amigos hoy vengo a comentaros una tecnología que me parece bastante interesante para todos aquellos empresarios y comerciantes. Se trata del llamado <a title="Publicidad bluetooh Huelva, Sevilla" href="http://www.proximidad-bluetooth.es/publicidad_bluetooth.aspx" target="_blank">márketing de proximidad o publicidad por bluetooth</a> que es una nueva forma de publicidad electrónica.</p>
<p>Consiste en mandar publicidad en un radio de unos 45-50 m a través de un <a title="Proximidad, publicidad bluetooth" href="http://www.proximidad-bluetooth.es" target="_blank">servidor de bluetooth</a> a todos los dispositivos que se encuentren en ese radio de acción.</p>
<p>Sus características son muy interesantes, ya que incrementa notablemente las ventas, captando al cliente que pasa cerca del establecimiento de venta.</p>
<p>En Europa prácticamente el 90% de la población posee un teléfono móvil de los cuales un 75% disponen de la tecnología Bluetooth para poder realizar comunicaciones inalámbricas. Gracias a las nuevas tecnologías podemos incorporar este canal de comunicación a las estrategias de marketing y publicidad y ofrecer contenidos innovadores para establecer una comunicación interactiva con el público objetivo.</p>
<p>El Marketing de proximidad mediante Bluetooth, es un sistema que ya ha sido bastante utilizado por algunas marcas e instituciones para enviar publicidad e información. Casi siempre se hace uso de Obex, un protocolo para el intercambio de &#8220;objetos binarios&#8221; que requiere autorización pero no autentificación (por lo que no es necesario emparejar a emisor / receptor) y que funciona sobre infrarrojos o BlueTooth. Lo soportan casi todos los teléfonos moviles actuales, las PDA&#8230;</p>
<p>Se le pueden mandar desde descuentos promocionales a videos publicitarios pasando por juegos multimedia para movil, con lo cual potencia la imágen de marca de la empresa e incrementa sus ventas.</p>
<p>Además, este tipo de publicidad por bluetooth no es intrusiva, ya que antes de enviarte la publicidad te pregunta si deseas aceptarla, entrando posteriormente en una lista negra del servidor de bluetooth y no volviendote a molestar según un tiempo parametrizado en el dispositivo.</p>
<p>El material multimedia detallado que se puede enviar con este sistema puede encontrarlo en la web de la empresa dedicada al sector del desarrollo de <a title="Campañas de publicidad por bluetooth" href="http://www.proximidad-bluetooth.es/Items.aspx" target="_blank">campañas de marketing de proximidad</a>.</p>
<p>Ésta empresa posee un <a title="desarrollo software a medida con .NET " href="http://www.realceonline.com/servicios/software.aspx" target="_blank">software desarrollado a medida</a> para que el cliente pueda cargar sus propias campañas de publicidad por bluetooth de forma fácil y amigable sin tener que entender de informática. Plantea todo el servicio en una <a title="Diseño Web, marketing de proximidad, publicidad online, desarrollo de software a medida" href="http://www.realceonline.com" target="_blank">interfaz web</a> con posibilidad de acceder a la administración de las campañas de marketing de proximidad en cualquier momento para cambiar los parámetros o simplemente ver las estadísticas en tiempo real de las campañas actuales.</p>
<p>Dicho esto, solo queda decir que el siguiente paso en la publicidad tradicional es el marketing de proximidad. Muchas gracias por su tiempo y espero que les haya resultado interesante la información.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aplicacioneswebonline.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aplicacioneswebonline.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/aplicacioneswebonline.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/aplicacioneswebonline.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/aplicacioneswebonline.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/aplicacioneswebonline.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/aplicacioneswebonline.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/aplicacioneswebonline.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/aplicacioneswebonline.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/aplicacioneswebonline.wordpress.com/47/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aplicacioneswebonline.wordpress.com&blog=3928443&post=47&subd=aplicacioneswebonline&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://aplicacioneswebonline.wordpress.com/2009/08/25/marketing-de-proximidad-publicidad-por-bluetooh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6a7b4f0aaf7271969d09962a5ae408e3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">makinsc</media:title>
		</media:content>
	</item>
		<item>
		<title>Curso online Diseño Multimedia con Flash 8</title>
		<link>http://aplicacioneswebonline.wordpress.com/2009/02/26/curso-online-diseno-multimedia-con-flash-8/</link>
		<comments>http://aplicacioneswebonline.wordpress.com/2009/02/26/curso-online-diseno-multimedia-con-flash-8/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 17:54:00 +0000</pubDate>
		<dc:creator>makinsc</dc:creator>
				<category><![CDATA[Diseño multimedia]]></category>
		<category><![CDATA[cursos online Huelva]]></category>
		<category><![CDATA[Cursos online]]></category>
		<category><![CDATA[Diseño Web]]></category>
		<category><![CDATA[Formación]]></category>

		<guid isPermaLink="false">http://aplicacioneswebonline.wordpress.com/?p=42</guid>
		<description><![CDATA[La prestigiosa empresa Realce Online eMarketing y Diseño lanza un nuevo curso de desarrollo y diseño de aplicaciones multimedia con la tecnología flash 8.
Es un curso completamente online del que los estudiantes podrán convalidar hasta 5 créditos de libre configuración en la Universidad de Huelva.
Ni que decir tiene que todo programador debe saber todo tipo [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aplicacioneswebonline.wordpress.com&blog=3928443&post=42&subd=aplicacioneswebonline&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>La prestigiosa empresa Realce Online eMarketing y Diseño lanza un nuevo curso de desarrollo y diseño de aplicaciones multimedia con la tecnología flash 8.</p>
<p>Es un curso completamente online del que los estudiantes podrán convalidar hasta 5 créditos de libre configuración en la Universidad de Huelva.</p>
<p>Ni que decir tiene que todo programador debe saber todo tipo de tecnologías y también diseñar. Con éste curso conseguirá dar el salto definitivo de calidad que necesita y podrán ampliar su abanico de posibilidades laborales.</p>
<p><!--[if gte mso 9]&gt;  Normal 0   21   false false false  ES-TRAD X-NONE X-NONE              MicrosoftInternetExplorer4              &lt;![endif]--><!--[if gte mso 9]&gt;                                                                                                                                            &lt;![endif]--></p>
<p class="MsoNormal"><strong><span style="text-decoration:underline;"><span style="font-size:14pt;">Curso de Introducción al Diseño Multimedia Con Flash 8</span></span></strong></p>
<p class="MsoNormal">
<p class="Default"><strong><em><span style="font-size:11pt;color:#4f81bc;">Objetivos del Curso de Introducción al Diseño Multimedia con Flash 8 </span></em></strong></p>
<p class="Default"><span style="font-size:11pt;">El Curso está indicado para todos aquellos usuarios que desean aprender a crear presentaciones multimedia avanzadas para la web y el mundo de Internet principalmente. </span></p>
<p class="Default"><span style="font-size:11pt;">Tanto para los usuarios más experimentados como para los noveles, el objetivo final del Curso de Flash 8 es el mismo: Un profundo conocimiento teórico/práctico de Flash 8, que permita emprender proyectos profesionales de envergadura, con garantías de éxito. </span></p>
<p class="Default"><strong><em><span style="font-size:11pt;color:#4f81bc;"> </span></em></strong></p>
<p class="Default"><strong><em><span style="font-size:11pt;color:#4f81bc;">¿A quién va dirigido este curso? </span></em></strong></p>
<p class="Default"><span style="font-size:11pt;">El Curso Flash 8 on-line está dirigido a: </span></p>
<p class="Default" style="margin-left:0;text-indent:0;"><!--[if !supportLists]--><span style="font-size:11pt;"><span><span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span></span><span style="font-size:11pt;">Estudiantes que pretendan ampliar sus conocimientos en entornos multimedia </span></p>
<p class="Default" style="margin-left:0;text-indent:0;"><!--[if !supportLists]--><span style="font-size:11pt;"><span><span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span></span><!--[endif]--><span style="font-size:11pt;font-family:Wingdings;"> </span><span style="font-size:11pt;">Desarrolladores de sitios Web. </span></p>
<p class="Default" style="margin-left:0;text-indent:0;"><!--[if !supportLists]--><span style="font-size:11pt;"><span><span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span></span><!--[endif]--><span style="font-size:11pt;font-family:Wingdings;"> </span><span style="font-size:11pt;">Diseñadores gráficos. </span></p>
<p class="Default" style="margin-left:0;text-indent:0;"><!--[if !supportLists]--><span style="font-size:11pt;"><span><span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span></span><!--[endif]--><span style="font-size:11pt;font-family:Wingdings;"> </span><span style="font-size:11pt;">Usuarios de antiguas versiones de Flash. </span></p>
<p class="Default" style="margin-left:0;text-indent:0;"><!--[if !supportLists]--><span style="font-size:11pt;"><span><span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span></span><!--[endif]--><span style="font-size:11pt;font-family:Wingdings;"> </span><span style="font-size:11pt;">Desarrolladores Multimedia </span></p>
<p class="Default" style="margin-left:0;text-indent:0;"><!--[if !supportLists]--><span style="font-size:11pt;"><span><span style="font-family:&quot;font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;"> </span></span></span><!--[endif]--><span style="font-size:11pt;font-family:Wingdings;"> </span><span style="font-size:11pt;">Programadores en entornos gráficos. </span></p>
<p class="Default"><span style="font-size:11pt;"> </span></p>
<p class="Default"><span style="font-size:11pt;">En cualquier caso, el curso no requiere un conocimiento previo ya que abarca desde los principales conocimientos teóricos a técnicas avanzadas para alcanzar resultados pero detalladamente explicadas, en un incremento del nivel paulatino para que puedan realizarlas los alumnos que no tengan experiencia anterior en Flash 8 o alguna versión anterior o posterior. </span></p>
<p class="Default"><span style="font-size:11pt;"> </span></p>
<p class="Default"><strong><em><span style="font-size:11pt;color:#4f81bc;">Duración y Evaluación </span></em></strong></p>
<p class="Default"><span style="font-size:11pt;">La duración del curso suponen 75 horas, y su desarrollo tiene lugar en una de aprendizaje, donde el alumno cuenta con plena libertad horaria, lo adaptarse a las necesidades del alumno. </span></p>
<p class="Default"><span style="font-size:11pt;">Las 75 horas lectivas se pueden repartir a lo largo de 2,5 meses aproximadamente, de Marzo de 2009 a 1 de Junio de 2009, fecha límite para entregar la practica evaluada, conjuntamente con el aprovechamiento del periodo lectivo de forma evaluar finalmente al alumno con una calificación en una escala de 0 a 10. </span></p>
<p class="MsoNormal">
<p class="MsoNormal"><strong><em><span style="color:#4f81bc;">Créditos de libre configuración</span></em></strong></p>
<p class="MsoNormal">Si eres estudiante de la UHU podrás, con el certificado de haber aprobado el curso, convalidar hasta 5 créditos para lo que tienes que dirigirte a secretaria, solicitar la convalidación y abonar las tasas (30% del precio normal del crédito).</p>
<p class="MsoNormal">
<p class="MsoNormal"><strong><em><span style="color:#4f81bc;">Matriculación</span></em></strong></p>
<p class="MsoNormal">Para matricularte puedes seguir las instrucciones que encontraras  visitando la web:</p>
<p class="MsoNormal"><a href="http://www.cursostecnologicos.com/">http://www.cursostecnologicos.com</a></p>
<p class="MsoNormal"><img class="aligncenter size-medium wp-image-45" title="curso" src="http://aplicacioneswebonline.files.wordpress.com/2009/02/curso.jpg?w=211&#038;h=300" alt="curso" width="211" height="300" /></p>
<p class="MsoNormal">
<p class="MsoNormal">Saludos y espero que la información sea de su agrado.</p>
<p class="MsoNormal"><em><span style="font-size:10pt;color:#1f497d;" lang="ES"><a href="http://www.realceonline.com/"></a></span></em><em></em></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aplicacioneswebonline.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aplicacioneswebonline.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/aplicacioneswebonline.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/aplicacioneswebonline.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/aplicacioneswebonline.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/aplicacioneswebonline.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/aplicacioneswebonline.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/aplicacioneswebonline.wordpress.com/42/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/aplicacioneswebonline.wordpress.com/42/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/aplicacioneswebonline.wordpress.com/42/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aplicacioneswebonline.wordpress.com&blog=3928443&post=42&subd=aplicacioneswebonline&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://aplicacioneswebonline.wordpress.com/2009/02/26/curso-online-diseno-multimedia-con-flash-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6a7b4f0aaf7271969d09962a5ae408e3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">makinsc</media:title>
		</media:content>

		<media:content url="http://aplicacioneswebonline.files.wordpress.com/2009/02/curso.jpg?w=211" medium="image">
			<media:title type="html">curso</media:title>
		</media:content>
	</item>
		<item>
		<title>Extendiendo proveedor de perfiles para que guarde en cookie (I).</title>
		<link>http://aplicacioneswebonline.wordpress.com/2009/01/03/extendiendo-proveedor-de-perfiles-aspnet-para-que-guarde-en-cookie-i/</link>
		<comments>http://aplicacioneswebonline.wordpress.com/2009/01/03/extendiendo-proveedor-de-perfiles-aspnet-para-que-guarde-en-cookie-i/#comments</comments>
		<pubDate>Sat, 03 Jan 2009 12:36:59 +0000</pubDate>
		<dc:creator>makinsc</dc:creator>
				<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://aplicacioneswebonline.wordpress.com/?p=20</guid>
		<description><![CDATA[Explicaré cómo realizar un proveedor de perfiles de ASP.NET 2.0 para que en vez de guardar los datos en una base de datos aspnetdb.mdf como viene por defecto lo haga a través de una cookie en el explorador.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aplicacioneswebonline.wordpress.com&blog=3928443&post=20&subd=aplicacioneswebonline&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:small;font-family:Calibri;">En primer lugar deberíamos definir formal y brevemente qué es y para que sirven los proveedores de perfiles en ASP.NET y como están realizados por dentro. </span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:small;font-family:Calibri;">Los proveedores de perfiles, sin querer entrar en mucho detalle, engloban una serie de funcionalidad específica, para guardar datos de un posible perfil de un usuario de un sitio Web. Entre estos datos, los más comunes son por ejemplo: el tema de la página que tiene seleccionado, el nombre, apellidos, edad, y todas las preferencias que se nos ocurran.</span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:small;font-family:Calibri;">Este proveedor de perfiles, por defecto, está implementado para que guarde los datos en la base de datos por defecto de ASP.NET, la base de datos de SQL Server<span> </span>ASPNETDB, y de esta limitación, nos viene al caso este post.</span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:small;font-family:Calibri;">Existen muchas ocasiones en las que no usamos sql Server por <a title="Diseño Web y desarrollo de software a medida" href="http://www.realceonline.com" target="_blank">especificaciones del diseño</a> y tenemos que usar otro motor de base de datos distinto, o queremos ampliar esa funcionalidad que ya trae para que además de guardar en la bbdd por defecto de sql Server, guarde otros datos en otras tablas de nuestra base de datos propia. En fin, se me ocurren multitud de escenarios en los que sería beneficioso poder agregar funcionalidad o cambiarla por completo para adecuar el adaptador de perfiles a nuestras necesidades.</span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:small;font-family:Calibri;">Gracias a que el proveedor de perfiles por defecto de Microsoft ASP.NET está basado en el patrón “Strategy”, que a groso modo dice que para resolver un problema determinado (en nuestro caso guardar preferencias de nuestros usuarios para mas tarde aplicarlas cuando vuelva al sitio) se le puede conectar diferentes algoritmos , según nos convenga. Cualquier programa que ofrezca un servicio o función determinada, que pueda ser realizada de varias maneras, es candidato a utilizar el patrón <strong>Strategy</strong>. Puede haber cualquier número de estrategias y cualquiera de ellas podrá ser intercambiada por otra en cualquier momento, incluso en tiempo de ejecución.</span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:small;font-family:Calibri;">Después de esta pequeña introducción me voy a referir al motivo de este post, que es crear un proveedor de perfiles que en vez de guardar los datos en una base de datos, pueda guardarlos en una cookie, para luego volver a recuperarlos en posteriores ocasiones siempre que la cooki siga existiendo.</span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:small;"><span style="font-family:Calibri;"><span> </span><strong>1º En primer lugar, lo que vamos<span> </span>a hacer es crear un proyecto classlibrary con Visual Studio. </strong></span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:small;font-family:Calibri;"><strong>Borramos la clase que nos viene por defecto y creamos una que se llame ProfileCookieProvider y que herede de ProfileProvider.</strong></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;color:blue;font-family:&quot;">class</span><span style="font-size:10pt;font-family:&quot;"> <span style="color:#2b91af;">ProfileCookie</span>:<span style="color:#2b91af;">ProfileProvider</span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:10pt;line-height:115%;font-family:&quot;"><span> </span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:small;font-family:Calibri;"><strong>2º Luego sobrescribimos todos los métodos de la clase de la que heredamos.</strong></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-family:Calibri;"><span style="font-size:10pt;color:blue;" lang="EN-US">public</span><span style="font-size:10pt;" lang="EN-US"> <span style="color:blue;">override</span> <span style="color:blue;">int</span> DeleteInactiveProfiles(<span style="color:#2b91af;">ProfileAuthenticationOption</span> authenticationOption, <span style="color:#2b91af;">DateTime</span> userInactiveSinceDate)</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span>{</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">throw</span> <span style="color:blue;">new</span> <span style="color:#2b91af;">NotImplementedException</span>();</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span>}</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"> </span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">override</span> <span style="color:blue;">int</span> DeleteProfiles(<span style="color:blue;">string</span>[] usernames)</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span>{</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">throw</span> <span style="color:blue;">new</span> <span style="color:#2b91af;">NotImplementedException</span>();</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span>}</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"> </span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">override</span> <span style="color:blue;">int</span> DeleteProfiles(<span style="color:#2b91af;">ProfileInfoCollection</span> profiles)</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span>{</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">throw</span> <span style="color:blue;">new</span> <span style="color:#2b91af;">NotImplementedException</span>();</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span> </span>}</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"> </span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">override</span> <span style="color:#2b91af;">ProfileInfoCollection</span> FindInactiveProfilesByUserName(<span style="color:#2b91af;">ProfileAuthenticationOption</span> authenticationOption, <span style="color:blue;">string</span> usernameToMatch, <span style="color:#2b91af;">DateTime</span> userInactiveSinceDate, <span style="color:blue;">int</span> pageIndex, <span style="color:blue;">int</span> pageSize, <span style="color:blue;">out</span> <span style="color:blue;">int</span> totalRecords)</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span>{</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">throw</span> <span style="color:blue;">new</span> <span style="color:#2b91af;">NotImplementedException</span>();</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span>}</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"> </span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">override</span> <span style="color:#2b91af;">ProfileInfoCollection</span> FindProfilesByUserName(<span style="color:#2b91af;">ProfileAuthenticationOption</span> authenticationOption, <span style="color:blue;">string</span> usernameToMatch, <span style="color:blue;">int</span> pageIndex, <span style="color:blue;">int</span> pageSize, <span style="color:blue;">out</span> <span style="color:blue;">int</span> totalRecords)</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span> </span>{</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">throw</span> <span style="color:blue;">new</span> <span style="color:#2b91af;">NotImplementedException</span>();</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span>}</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"> </span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">override</span> <span style="color:#2b91af;">ProfileInfoCollection</span> GetAllInactiveProfiles(<span style="color:#2b91af;">ProfileAuthenticationOption</span> authenticationOption, <span style="color:#2b91af;">DateTime</span> userInactiveSinceDate, <span style="color:blue;">int</span> pageIndex, <span style="color:blue;">int</span> pageSize, <span style="color:blue;">out</span> <span style="color:blue;">int</span> totalRecords)</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span>{</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">throw</span> <span style="color:blue;">new</span> <span style="color:#2b91af;">NotImplementedException</span>();</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span>}</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"> </span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">override</span> <span style="color:#2b91af;">ProfileInfoCollection</span> GetAllProfiles(<span style="color:#2b91af;">ProfileAuthenticationOption</span> authenticationOption, <span style="color:blue;">int</span> pageIndex, <span style="color:blue;">int</span> pageSize, <span style="color:blue;">out</span> <span style="color:blue;">int</span> totalRecords)</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span>{</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">throw</span> <span style="color:blue;">new</span> <span style="color:#2b91af;">NotImplementedException</span>();</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span>}</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"> </span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">override</span> <span style="color:blue;">int</span> GetNumberOfInactiveProfiles(<span style="color:#2b91af;">ProfileAuthenticationOption</span> authenticationOption, <span style="color:#2b91af;">DateTime</span> userInactiveSinceDate)</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span>{</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">throw</span> <span style="color:blue;">new</span> <span style="color:#2b91af;">NotImplementedException</span>();</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span>}</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"> </span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">override</span> <span style="color:blue;">string</span> ApplicationName</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span>{</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">get</span></span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span>{</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">throw</span> <span style="color:blue;">new</span> <span style="color:#2b91af;">NotImplementedException</span>();</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span>}</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">set</span></span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span>{</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">throw</span> <span style="color:blue;">new</span> <span style="color:#2b91af;">NotImplementedException</span>();</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span>}</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span>}</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"> </span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">override</span> System.Configuration.<span style="color:#2b91af;">SettingsPropertyValueCollection</span> GetPropertyValues(System.Configuration.<span style="color:#2b91af;">SettingsContext</span> context, System.Configuration.<span style="color:#2b91af;">SettingsPropertyCollection</span> collection)</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span>{</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">throw</span> <span style="color:blue;">new</span> <span style="color:#2b91af;">NotImplementedException</span>();</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span>}</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"> </span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;" lang="EN-US"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">override</span> <span style="color:blue;">void</span> SetPropertyValues(System.Configuration.<span style="color:#2b91af;">SettingsContext</span> context, System.Configuration.<span style="color:#2b91af;">SettingsPropertyValueCollection</span> collection)</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-family:Calibri;"><span style="font-size:10pt;" lang="EN-US"><span> </span></span><span style="font-size:10pt;">{</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;"><span style="font-family:Calibri;"><span> </span><span style="color:blue;">throw</span> <span style="color:blue;">new</span> <span style="color:#2b91af;">NotImplementedException</span>();</span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:10pt;line-height:115%;"><span style="font-family:Calibri;"><span> </span>}</span></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:10pt;line-height:115%;font-family:&quot;"><strong>3º Declaramos las variables y propiedades de la clase</strong> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;color:blue;font-family:&quot;" lang="EN-US">class</span><span style="font-size:10pt;font-family:&quot;" lang="EN-US"> <span style="color:#2b91af;">ProfileCookie</span>:<span style="color:#2b91af;">ProfileProvider</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>{</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:green;">// Declaramos las variables</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">private</span> <span style="color:blue;">string</span> _Nombrecookie;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">string</span> Nombrecookie</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>{</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">get</span> { <span style="color:blue;">return</span> _Nombrecookie; }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">set</span> { _Nombrecookie = <span style="color:blue;">value</span>; }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>}</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">private</span> <span style="color:blue;">int</span> _ExpiracionCookie;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">int</span> ExpiracionCookie</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>{</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">get</span> { <span style="color:blue;">return</span> _ExpiracionCookie; }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">set</span> { _ExpiracionCookie = <span style="color:blue;">value</span>; }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>}</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">private</span> <span style="color:blue;">string</span> _appNombre;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">public</span> <span style="color:blue;">string</span> AppNombre</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>{</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">get</span> { <span style="color:blue;">return</span> _appNombre; }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">set</span> { _appNombre = <span style="color:blue;">value</span>; }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span></span><span style="font-size:10pt;font-family:&quot;">}</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:10pt;line-height:115%;font-family:&quot;"><strong>4º Creamos el procedimiento de inicialización del proveedor, donde se le pasará un parámetro name con el nombre del proveedor y un parámetro namevaluedcollection “config” que contendrá todos los atributos del proveedor que se encuentran en el archovo de configuración Web.config de la aplicación que usa el proveedor.</strong></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;color:blue;font-family:&quot;" lang="EN-US">public</span><span style="font-size:10pt;font-family:&quot;" lang="EN-US"> <span style="color:blue;">override</span> <span style="color:blue;">void</span> Initialize(<span style="color:blue;">string</span> name, System.Collections.Specialized.<span style="color:#2b91af;">NameValueCollection</span> config)</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span></span><span style="font-size:10pt;font-family:&quot;">{</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">// Comprobar que el proveedor tiene un nombre</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span></span><span style="font-size:10pt;color:blue;font-family:&quot;" lang="EN-US">if</span><span style="font-size:10pt;font-family:&quot;" lang="EN-US">(<span style="color:blue;">string</span>.IsNullOrEmpty(name))</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>{</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>name= <span style="color:#a31515;">&#8220;ProfileCookieProvider&#8221;</span>;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span></span><span style="font-size:10pt;font-family:&quot;">}</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">// Inicializar el método de la clase base</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">base</span>.Initialize(name, config);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">// Leemos el nombre de la aplicacion</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span></span><span style="font-size:10pt;font-family:&quot;" lang="EN-US">_appNombre = config[<span style="color:#a31515;">"aplicationName"</span>];</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">if</span> (<span style="color:blue;">string</span>.IsNullOrEmpty(_appNombre))</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>{</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>_appNombre = System.Web.Hosting.<span style="color:#2b91af;">HostingEnvironment</span>.ApplicationVirtualPath;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span></span><span style="font-size:10pt;font-family:&quot;">}</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">//Leemos el nombre de la cookie</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;color:green;font-family:&quot;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span></span><span style="font-size:10pt;font-family:&quot;" lang="EN-US">_Nombrecookie = config[<span style="color:#a31515;">"cookieName"</span>];</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">if</span> (<span style="color:blue;">string</span>.IsNullOrEmpty(_Nombrecookie))</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span></span><span style="font-size:10pt;font-family:&quot;">{</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span>_Nombrecookie = <span style="color:#a31515;">&#8220;.Perfil&#8221;</span>;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">//Eliminamos el nombre de la cookie</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span>config.Remove(<span style="color:#a31515;">&#8220;cookieName&#8221;</span>);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">// Leemos la duración de la cookie</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span></span><span style="font-size:10pt;color:blue;font-family:&quot;" lang="EN-US">bool</span><span style="font-size:10pt;font-family:&quot;" lang="EN-US"> sucess = <span style="color:#2b91af;">Int32</span>.TryParse(config[<span style="color:#a31515;">"cookieName"</span>], <span style="color:blue;">out</span> _ExpiracionCookie);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">if</span> (!sucess)</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>{</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>_ExpiracionCookie = 10;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>}</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>config.Remove(<span style="color:#a31515;">&#8220;cookieExpires&#8221;</span>);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span></span><span style="font-size:10pt;color:green;font-family:&quot;">// Lanzamos una excepcion si hay algún atributo desconocido</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span></span><span style="font-size:10pt;color:blue;font-family:&quot;" lang="EN-US">if</span><span style="font-size:10pt;font-family:&quot;" lang="EN-US"> (config.Count &gt; 0)</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>{</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">string</span> atributo = config.GetKey(0);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">if</span> (!<span style="color:blue;">string</span>.IsNullOrEmpty(atributo))</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>{</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">throw</span> <span style="color:blue;">new</span> <span style="color:#2b91af;">ProviderException</span>(<span style="color:#a31515;">&#8220;Atributo no reconocido : &#8220;</span> + atributo);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span></span><span style="font-size:10pt;font-family:&quot;">}</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:10pt;line-height:115%;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:small;font-family:Calibri;"><strong>5º No vamos a implementar todos los métodos heredados de la clase base,<span> </span>lanzando un error en todas las que no implementemos.</strong></span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:10pt;color:blue;line-height:115%;font-family:&quot;">throw</span><span style="font-size:10pt;line-height:115%;font-family:&quot;"> <span style="color:blue;">new</span> <span style="color:#2b91af;">NotImplementedException</span>();</span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:10pt;line-height:115%;font-family:&quot;"> </span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:small;font-family:Calibri;"><strong>6º Implementamos el método GetPropertyValues que devolverá el contenido del perfil del usuario. Se leerán los datos desde el almacén de datos, en este caso desde la cookie, y se devuelve en una colección de valores.</strong></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;color:blue;font-family:&quot;" lang="EN-US">public</span><span style="font-size:10pt;font-family:&quot;" lang="EN-US"> <span style="color:blue;">override</span> System.Configuration.<span style="color:#2b91af;">SettingsPropertyValueCollection</span> GetPropertyValues(System.Configuration.<span style="color:#2b91af;">SettingsContext</span> context, System.Configuration.<span style="color:#2b91af;">SettingsPropertyCollection</span> collection)</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>{</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>System.Configuration.<span style="color:#2b91af;">SettingsPropertyValueCollection</span> settings;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>settings = <span style="color:blue;">new</span> System.Configuration.<span style="color:#2b91af;">SettingsPropertyValueCollection</span>();</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">if</span> (collection.Count == 0)</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">return</span> settings;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span></span><span style="font-size:10pt;color:green;font-family:&quot;">// Añadimos todas las porpiedades a la colección de salida,</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">// Garantizando que se van a crear dichas entradas en el objeto profil</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span></span><span style="font-size:10pt;color:blue;font-family:&quot;" lang="EN-US">foreach</span><span style="font-size:10pt;font-family:&quot;" lang="EN-US"> (System.Configuration.<span style="color:#2b91af;">SettingsProperty</span> property <span style="color:blue;">in</span> collection)</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>{</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>System.Configuration.<span style="color:#2b91af;">SettingsPropertyValue</span> pv = <span style="color:blue;">new</span> System.Configuration.<span style="color:#2b91af;">SettingsPropertyValue</span>(property);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span></span><span style="font-size:10pt;font-family:&quot;">settings.Add(pv);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">// Leemos la cookie si existe</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span></span><span style="font-size:10pt;color:blue;font-family:&quot;" lang="EN-US">string</span><span style="font-size:10pt;font-family:&quot;" lang="EN-US"> username = (<span style="color:blue;">string</span>)context[<span style="color:#a31515;">"UserName"</span>];</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">string</span> cookie = Nombrecookie + <span style="color:#a31515;">&#8221; &#8220;</span> + username;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>System.Web.<span style="color:#2b91af;">HttpCookie</span> cookieprofile = System.Web.<span style="color:#2b91af;">HttpContext</span>.Current.Request.Cookies[cookie];</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">if</span> (cookieprofile == <span style="color:blue;">null</span>)</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>{</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">return</span> settings;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span></span><span style="font-size:10pt;font-family:&quot;">}</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">// Descodificación en Base64 y deserialización binaria</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span></span><span style="font-size:10pt;color:blue;font-family:&quot;" lang="EN-US">string</span><span style="font-size:10pt;font-family:&quot;" lang="EN-US"> data = cookieprofile[<span style="color:#a31515;">"SerializedData"</span>];</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">byte</span>[] bits = <span style="color:#2b91af;">Convert</span>.FromBase64String(data);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>System.Collections.<span style="color:#2b91af;">Hashtable</span> table = <span style="color:blue;">null</span>;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">using</span> (System.IO.<span style="color:#2b91af;">MemoryStream</span> mem = <span style="color:blue;">new</span> System.IO.<span style="color:#2b91af;">MemoryStream</span>(bits))</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>{</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>System.Runtime.Serialization.Formatters.Binary.<span style="color:#2b91af;">BinaryFormatter</span> bin;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>bin = <span style="color:blue;">new</span> System.Runtime.Serialization.Formatters.Binary.<span style="color:#2b91af;">BinaryFormatter</span>();</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>table = (System.Collections.<span style="color:#2b91af;">Hashtable</span>)bin.Deserialize(mem);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span></span><span style="font-size:10pt;font-family:&quot;">mem.Close();</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span>}</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">// Añadimos los datos a las propiedades</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span></span><span style="font-size:10pt;color:blue;font-family:&quot;" lang="EN-US">foreach</span><span style="font-size:10pt;font-family:&quot;" lang="EN-US"> (System.Configuration.<span style="color:#2b91af;">SettingsPropertyValue</span> spv <span style="color:blue;">in</span> settings)</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>{</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>spv.Deserialized = <span style="color:blue;">true</span>;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>spv.PropertyValue = table[spv.Name];</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span></span><span style="font-size:10pt;font-family:&quot;">}</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">return</span> settings;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:10pt;line-height:115%;font-family:&quot;"><span> </span>}</span><span style="font-size:small;font-family:Calibri;"> </span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:small;font-family:Calibri;"> </span><span style="font-size:small;font-family:Calibri;"><strong>7º Implementamos el método SetPropertyValues, que guardará el contenido de perfil del usuario al final de cada solicitud.</strong></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;color:gray;font-family:&quot;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;color:gray;font-family:&quot;">///</span><span style="font-size:10pt;color:green;font-family:&quot;"> </span><span style="font-size:10pt;color:gray;font-family:&quot;">&lt;summary&gt;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> Guarda el contenido de collection en una cookie</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;/summary&gt;</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;param name=&#8221;context&#8221;&gt;</span><span style="color:green;">Información contextual</span><span style="color:gray;">&lt;/param&gt;</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:gray;">///</span><span style="color:green;"> </span><span style="color:gray;">&lt;param name=&#8221;collection&#8221;&gt;</span><span style="color:green;">Colección de propiedades a guardar en la cookie</span><span style="color:gray;">&lt;/param&gt;</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span></span><span style="font-size:10pt;color:blue;font-family:&quot;" lang="EN-US">public</span><span style="font-size:10pt;font-family:&quot;" lang="EN-US"> <span style="color:blue;">override</span> <span style="color:blue;">void</span> SetPropertyValues(System.Configuration.<span style="color:#2b91af;">SettingsContext</span> context, System.Configuration.<span style="color:#2b91af;">SettingsPropertyValueCollection</span> collection)</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span></span><span style="font-size:10pt;font-family:&quot;">{</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">// Obtengo información sobre el usuario</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:blue;">string</span> username = (<span style="color:blue;">string</span>)context[<span style="color:#a31515;">"UserName"</span>];</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span></span><span style="font-size:10pt;color:blue;font-family:&quot;" lang="EN-US">bool</span><span style="font-size:10pt;font-family:&quot;" lang="EN-US"> autenticado = (<span style="color:blue;">bool</span>)context[<span style="color:#a31515;">"IsAuthenticated"</span>];</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:green;">// Si no hay propiedades terminamos</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">if</span> (<span style="color:#2b91af;">String</span>.IsNullOrEmpty(username) || collection.Count == 0)</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>{ <span style="color:blue;">return</span>; }</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:green;">// Preparo la Cookie</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">string</span> cookie = Nombrecookie + <span style="color:#a31515;">&#8220;_&#8221;</span> + username;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>System.Web.<span style="color:#2b91af;">HttpCookie</span> cookiePerfil = System.Web.<span style="color:#2b91af;">HttpContext</span>.Current.Request.Cookies[cookie];</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">if</span> (cookiePerfil == <span style="color:blue;">null</span>)</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>{</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>cookiePerfil = <span style="color:blue;">new</span> System.Web.<span style="color:#2b91af;">HttpCookie</span>(cookie);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>}</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>cookiePerfil.Expires = <span style="color:#2b91af;">DateTime</span>.Now.AddMinutes(ExpiracionCookie);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span></span><span style="font-size:10pt;color:green;font-family:&quot;">// Preparo los datos para guardar en la cookie</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span></span><span style="font-size:10pt;font-family:&quot;" lang="EN-US">System.Collections.<span style="color:#2b91af;">Hashtable</span> tabla = <span style="color:blue;">new</span> System.Collections.<span style="color:#2b91af;">Hashtable</span>();</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">foreach</span> (System.Configuration.<span style="color:#2b91af;">SettingsPropertyValue</span> pp <span style="color:blue;">in</span> collection)</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>{</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">if</span> (!autenticado &amp;&amp; !(<span style="color:blue;">bool</span>)pp.Property.Attributes[<span style="color:#a31515;">"AllowAnonymous"</span>])</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>{</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">continue</span>;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>}</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>tabla.Add(pp.Name, pp.PropertyValue);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span></span><span style="font-size:10pt;font-family:&quot;">}</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">// Codificar y escribir la tabla hash para la cookie</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span></span><span style="font-size:10pt;font-family:&quot;" lang="EN-US">System.Runtime.Serialization.Formatters.Binary.<span style="color:#2b91af;">BinaryFormatter</span> bin;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>bin = <span style="color:blue;">new</span> System.Runtime.Serialization.Formatters.Binary.<span style="color:#2b91af;">BinaryFormatter</span>();</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>System.IO.<span style="color:#2b91af;">MemoryStream</span> mem = <span style="color:blue;">new</span> System.IO.<span style="color:#2b91af;">MemoryStream</span>();</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span>bin.Serialize(mem, tabla);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span><span style="color:blue;">string</span> data = <span style="color:#2b91af;">Convert</span>.ToBase64String(mem.GetBuffer(), 0, (<span style="color:blue;">int</span>)mem.Length);</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;" lang="EN-US"><span> </span></span><span style="font-size:10pt;font-family:&quot;">cookiePerfil[<span style="color:#a31515;">"SerializedData"</span>] = data;</span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"> </span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span><span style="color:green;">// Guardar en la cookie</span></span></p>
<p class="MsoNormal" style="line-height:normal;margin:0;"><span style="font-size:10pt;font-family:&quot;"><span> </span></span><span style="font-size:10pt;font-family:&quot;" lang="EN-US">System.Web.<span style="color:#2b91af;">HttpContext</span>.Current.Response.AppendCookie(cookiePerfil); </span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:10pt;line-height:115%;font-family:&quot;" lang="EN-US"><span> </span></span><span style="font-size:10pt;line-height:115%;font-family:&quot;">}</span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:10pt;line-height:115%;font-family:&quot;"> </span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:10pt;line-height:115%;font-family:&quot;">Ahora generamos el proyecto y nos crea una dll que es la que tendremos que usar en nuestro proyecto ASP.NET, que junto con unas configuraciones en el Web.config de nuestra aplicación harán posible el uso de perfiles de usuarios almacenados en cookies.</span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:10pt;line-height:115%;font-family:&quot;">Esto lo explicaré en el siguiente artículo ya que éste se ha extendido demasiado.</span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:10pt;line-height:115%;font-family:&quot;"> </span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:10pt;line-height:115%;font-family:&quot;">Espero que os haya sido útil esta información y que le saquéis provecho.</span></p>
<p class="MsoNormal" style="margin:0 0 10pt;"><span style="font-size:10pt;line-height:115%;font-family:&quot;">Hasta pronto.</span></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aplicacioneswebonline.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aplicacioneswebonline.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/aplicacioneswebonline.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/aplicacioneswebonline.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/aplicacioneswebonline.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/aplicacioneswebonline.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/aplicacioneswebonline.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/aplicacioneswebonline.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/aplicacioneswebonline.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/aplicacioneswebonline.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aplicacioneswebonline.wordpress.com&blog=3928443&post=20&subd=aplicacioneswebonline&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://aplicacioneswebonline.wordpress.com/2009/01/03/extendiendo-proveedor-de-perfiles-aspnet-para-que-guarde-en-cookie-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6a7b4f0aaf7271969d09962a5ae408e3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">makinsc</media:title>
		</media:content>
	</item>
		<item>
		<title>Cambiar Estilo de botón en ASP.NET en cliente</title>
		<link>http://aplicacioneswebonline.wordpress.com/2008/08/20/cambiar-estilo-de-boton-en-aspnet-en-cliente/</link>
		<comments>http://aplicacioneswebonline.wordpress.com/2008/08/20/cambiar-estilo-de-boton-en-aspnet-en-cliente/#comments</comments>
		<pubDate>Wed, 20 Aug 2008 07:23:35 +0000</pubDate>
		<dc:creator>makinsc</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Diseño Web]]></category>

		<guid isPermaLink="false">http://aplicacioneswebonline.wordpress.com/?p=17</guid>
		<description><![CDATA[Buenas, hoy voy a poner un pequeño apunte por si a alguien pudiese interesarle y para no olvidarme de él para el futuro.
Resulta que el otro día preguntaban en el Foro de MSDN España cómo hacer que cambie el estilo de un botón cuando obtiene el foco sin tener que recargar toda la página y [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aplicacioneswebonline.wordpress.com&blog=3928443&post=17&subd=aplicacioneswebonline&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Buenas, hoy voy a poner un pequeño apunte por si a alguien pudiese interesarle y para no olvidarme de él para el futuro.</p>
<p>Resulta que el otro día preguntaban en el Foro de MSDN España <strong>cómo hacer que cambie el estilo de un botón cuando obtiene el foco </strong>sin tener que recargar toda la página y sin usar AJAX por exigencias del servidor.</p>
<p>Entonces la solución fue esta:</p>
<p>Nos vamos al cóodigo HTML de la página y añadimos un text box y un botón</p>
<p><span style="color:#ff0000;"><em>&lt;asp:TextBox ID=&#8221;TextBox1&#8243; runat=&#8221;server&#8221;&gt;&lt;/asp:TextBox&gt;<br />
&lt;asp:Button ID=&#8221;Button1&#8243; runat=&#8221;server&#8221; Text=&#8221;Button&#8221; /&gt;</em></span></p>
<p>en el head de esta página creamos la siguiente función javascript :</p>
<p><em><span style="color:#ff0000;">&lt;script language=&#8221;javascript&#8221; type=&#8221;text/javascript&#8221;&gt;<br />
function cambiarEstilo(){<br />
document.getElementById(&#8216;Button1&#8242;).style.backgroundColor =&#8217;#FFAAFF&#8217;;<br />
}<br />
&lt;/script&gt;</span></em></p>
<p>y por último en el page load de la página o donde nos convenga añadimos un atributo al botón de forma que el evento onfocus llame a la función de la siguiente manera :</p>
<p><em><span style="color:#ff0000;">Button1.Attributes.Add(&#8220;onfocus&#8221;, &#8220;javascript:cambiarEstilo();&#8221;);</span></em></p>
<p>y listo, de esta manera, cuando estemos ejecutando la página pinchamos en el textbox y le damos al tabulador para que el foco se ponga en el botón y veremos el que fondo se cambia de color automáticamente.</p>
<p>Es lógico pensar que puedes cambiar cualquier cosa del botón desde javascript.</p>
<p>Sin más, espero que os haya sido interesante.</p>
<p>Hasta la próxima !!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/aplicacioneswebonline.wordpress.com/17/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/aplicacioneswebonline.wordpress.com/17/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aplicacioneswebonline.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aplicacioneswebonline.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/aplicacioneswebonline.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/aplicacioneswebonline.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/aplicacioneswebonline.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/aplicacioneswebonline.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/aplicacioneswebonline.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/aplicacioneswebonline.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/aplicacioneswebonline.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/aplicacioneswebonline.wordpress.com/17/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aplicacioneswebonline.wordpress.com&blog=3928443&post=17&subd=aplicacioneswebonline&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://aplicacioneswebonline.wordpress.com/2008/08/20/cambiar-estilo-de-boton-en-aspnet-en-cliente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6a7b4f0aaf7271969d09962a5ae408e3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">makinsc</media:title>
		</media:content>
	</item>
		<item>
		<title>Generar Factura en PDF con ASP.NET</title>
		<link>http://aplicacioneswebonline.wordpress.com/2008/07/18/generar-factura-en-pdf-con-aspnet/</link>
		<comments>http://aplicacioneswebonline.wordpress.com/2008/07/18/generar-factura-en-pdf-con-aspnet/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 10:55:50 +0000</pubDate>
		<dc:creator>makinsc</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Desarrollo software a medida]]></category>
		<category><![CDATA[Desarrollo y Diseño Web. Generación de informes con A]]></category>
		<category><![CDATA[PDF con ASP.NET]]></category>

		<guid isPermaLink="false">http://aplicacioneswebonline.wordpress.com/?p=9</guid>
		<description><![CDATA[Buenas, hoy voy a escribir como crear un informe, en este caso una factura de un pedido de una tienda virtual, en PDF con la tecnología de Microsoft ASP.NET 2.0 y una librería existente de código abierto que se llama Gios.PDF.
Comenzamos :
Antes que nada, decir que es una librería gratuita que podemos descargar el código [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aplicacioneswebonline.wordpress.com&blog=3928443&post=9&subd=aplicacioneswebonline&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><P class="MsoNormal"><SPAN style="line-height:115%;">Buenas, hoy voy a escribir como crear un informe, en este caso una factura de un pedido de una tienda virtual, en PDF con la tecnología de Microsoft ASP.NET 2.0 y una librería existente de código abierto que se llama Gios.PDF.</SPAN></P><br />
<P class="MsoListParagraph"><SPAN style="line-height:115%;">Comenzamos :</SPAN></P><br />
<P class="MsoListParagraph">Antes que nada, decir que es una librería gratuita que podemos descargar el código fuente y revisarlo. Debemos agregar las DLL en el directorio BIN de nuestra aplicación.</P><br />
<P class="MsoNormal">Vamos con el código&#8230;</P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN style="line-height:115%;">Lo primero que debemos crear es el documento PDF donde vamos a meter todos los datos de la factura.</SPAN></STRONG></P><br />
<P><SPAN style="line-height:115%;">PdfDocument</SPAN><SPAN style="line-height:115%;"> myPdfDocument = <SPAN style="color:blue;">new</SPAN> <SPAN style="color:#2b91af;">PdfDocument</SPAN>(<SPAN style="color:#2b91af;"> PdfDocumentFormat</SPAN>.InCentimeters( 21, 29.7));</SPAN></P><br />
<P class="MsoNormal"><SPAN style="line-height:115%;">La enumeración PdfDocumentFormat indica el tamaño del documento que vamos a crear. Tiene varias opciones como son A4, A4 Horizontal, letter8,5*11</SPAN></P><br />
<P class="MsoNormal"><SPAN style="line-height:115%;">En nuestro caso, le hemos indicado el tamaño por centímetros, ya que el PDF es un formato de impresión y no dependerá de la resolución de la pantalla.</SPAN></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN style="line-height:115%;">A continuación creamos una tabla donde vamos a meter el desglose de la factura :</SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN style="line-height:115%;">PdfTable</SPAN><SPAN style="line-height:115%;"> myPdfTable = myPdfDocument.NewTable( <SPAN style="color:blue;">new</SPAN> <SPAN style="color:#2b91af;">Font</SPAN>(<SPAN style="color:#a31515;">&#8220;Verdana&#8221;</SPAN>, 12), DatosDesglose.Rows.Count, 3, 4);</SPAN></P><br />
<P class="MsoNormal"><SPAN style="line-height:115%;">A la tabla le indicamos que tenemos tantas filas como tiene el datatable, las columnas se las inndicamos manualmente ya que son fijas y le damos un cellPadding de 4.</SPAN></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN style="line-height:115%;">Datos desglose es un DataTable que he rellenado anteriormente con los datos del pedido realizado.</SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN>DataTable</SPAN><SPAN> desglose</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>{</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:blue;">get</SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>{</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:green;">// Creo el DataTable</SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">DataTable</SPAN> dt = <SPAN style="color:blue;">new</SPAN> <SPAN style="color:#2b91af;">DataTable</SPAN>();</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:green;">// Le asigno las columnas</SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>dt.Columns.Add(<SPAN style="color:#a31515;">&#8220;Concepto&#8221;</SPAN>);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>dt.Columns.Add(<SPAN style="color:#a31515;">&#8220;Precio&#8221;</SPAN>);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>dt.Columns.Add(<SPAN style="color:#a31515;">&#8220;cantidad&#8221;</SPAN>);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN>// Obtengo los productos del pedido</SPAN><SPAN><SPAN> </SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN>DsProductosTableAdapters.<SPAN style="color:#2b91af;">Obtener_productos_pedidoTableAdapter</SPAN> TAProdPed = </SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN style="color:blue;">new</SPAN> DsProductosTableAdapters.<SPAN style="color:#2b91af;">Obtener_productos_pedidoTableAdapter</SPAN>();</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">DsProductos</SPAN>.<SPAN style="color:#2b91af;">Obtener_productos_pedidoDataTable</SPAN> DTProd = TAProdPed.GetData( <SPAN style="color:#2b91af;">Int32</SPAN>.Parse(idped));</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:green;">// Recorro los productos y los añado al DataTable creado anteriormente</SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN>foreach</SPAN><SPAN> (<SPAN style="color:#2b91af;">DsProductos</SPAN>.<SPAN style="color:#2b91af;">Obtener_productos_pedidoRow</SPAN> prod <SPAN style="color:blue;">in</SPAN> DTProd.Rows)</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>{</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">DataRow</SPAN> dr = dt.NewRow();</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>dr[0] = prod.nombre;</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>dr[1] = prod.precio.ToString() + <SPAN style="color:#a31515;">&#8220;€&#8221;</SPAN>;</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>dr[2] = prod.cantidad.ToString();</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>dt.Rows.Add(dr);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>}</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>}</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:green;">// Devuelvo el datatable relleno con los datos de los productos del pedido</SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:blue;">return</SPAN> dt;</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>}</SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN>Continuamos creando el PDF…</SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN>// Importamos los datos de los datatables con las cabeceras incluidas</SPAN></P><br />
<P class="MsoNormal"><SPAN>myPdfTable.ImportDataTable(DatosDesglose);</SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN>Le damos un poco de diseño visual a la tabla de desglose : </SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN>// Color de la cabecera</SPAN></P><br />
<P class="MsoNormal"><SPAN>myPdfTable.HeadersRow.SetColors(<SPAN style="color:#2b91af;">Color</SPAN>.White, <SPAN style="color:#2b91af;">Color</SPAN>.Navy);</SPAN></P><br />
<P class="MsoNormal"><SPAN>// Especificamos el color de las letras, el color de fondo y el color de fondo de las filas alternadas</SPAN></P><br />
<P class="MsoNormal"><SPAN>myPdfTable.SetColors(<SPAN style="color:#2b91af;">Color</SPAN>.Black, <SPAN style="color:#2b91af;">Color</SPAN>.White, <SPAN style="color:#2b91af;">Color</SPAN>.Gainsboro);</SPAN></P><br />
<P class="MsoNormal"><SPAN>// Establecemos el color del borde y el grosor del mismo diciendole que lo aplique a todo el grid</SPAN></P><br />
<P class="MsoNormal"><SPAN>myPdfTable.SetBorders(<SPAN style="color:#2b91af;">Color</SPAN>.Black, 1,<SPAN style="color:#2b91af;"> BorderType</SPAN>.CompleteGrid);</SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN>Asignamos el ancho de las columnas</SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN>myPdfTable.SetColumnsWidth(<SPAN style="color:blue;">new</SPAN> <SPAN style="color:blue;">int</SPAN>[] { 80, 20 });</SPAN></P><br />
<P class="MsoNormal"><SPAN>El ancho de las columnas no tiene que sumar 100, sino que es un ancho relativo dentro del documento. No es muy intuitivo y suele pasar que haya que hacer varias pruebas hasta que las columnas se ajustan correctamente como queremos.</SPAN></P><br />
<P class="MsoNormal"><SPAN>Comentar que se puede tener un número de columnas en el SetColumnsWidth inferior o igual al total de columnas de la tabla, y nunca superior, ya que si lo superamos, daría un error en tiempo de ejecución que te puede volver un poco loco.</SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN>Ahora creamos otra tabla de pdf para rellenarla con los datos de la empresa que emite la factura.</SPAN></STRONG></P><br />
<P class="MsoNormal"><STRONG><SPAN></SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN>// DATOS DE la empresa en CABECERA</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">PdfTable</SPAN> TablaDanosNacho = myPdfDocument.NewTable( <SPAN style="color:blue;">new</SPAN> <SPAN style="color:#2b91af;">Font</SPAN>(<SPAN style="color:#a31515;">&#8220;Verdana&#8221;</SPAN>, 12), 4, 2, 4);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosNacho.HeadersRow.SetColors(<SPAN style="color:#2b91af;">Color</SPAN>.White, <SPAN style="color:#2b91af;">Color</SPAN>.BurlyWood);</SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN>Damos una alineación al</SPAN></STRONG><STRONG><SPAN> contenido<SPAN> </SPAN></SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN>TablaDanosNacho.SetContentAlignment(<SPAN style="color:#2b91af;">ContentAlignment</SPAN>.MiddleCenter);</SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN>Le decimos que la columna 1 deberá tener el contenido en el centro a la izquierda</SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosNacho.Columns[1].SetContentAlignment(<SPAN style="color:#2b91af;">ContentAlignment</SPAN>.MiddleLeft);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosNacho.ImportDataTable(DataEmpresa);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosNacho.SetColumnsWidth(<SPAN style="color:blue;">new</SPAN> <SPAN style="color:blue;">int</SPAN>[] { 20, 80 });</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosNacho.SetBorders(<SPAN style="color:#2b91af;">Color</SPAN>.Black, 1, <SPAN style="color:#2b91af;">BorderType</SPAN>.Bounds);</SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN>Unimos las celdas de las columnas con esta instrucción</SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosNacho.HeadersRow.MergeCells();</SPAN></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN>Le asignamos a la cabecera un titular</SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosNacho.HeadersRow.SetContent(<SPAN style="color:#a31515;">&#8220;DATOS DE LA EMPRESA.&#8221;</SPAN>);</SPAN></P><br />
<P class="MsoNormal"><STRONG><SPAN></SPAN></STRONG></P><br />
<P class="MsoNormal"><STRONG><SPAN></SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN>La variable DataEmpresa la rellenamos de la siguiente manera : </SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN>DataTable</SPAN><SPAN> DataNacho</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>{</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:blue;">get</SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>{</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:green;">// Creamos el Datatable</SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">DataTable</SPAN> dt = <SPAN style="color:blue;">new</SPAN> <SPAN style="color:#2b91af;">DataTable</SPAN>();</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:green;">// Creamos las dos columnas sin texto que luego unimos en el PDFTable y le asignamos un texto</SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>dt.Columns.Add(<SPAN style="color:#a31515;">&#8220;&#8221;</SPAN>);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>dt.Columns.Add(<SPAN style="color:#a31515;">&#8220;&#8221;</SPAN>);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:green;">// Creamos una fila y le asignamos el nombre</SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">DataRow</SPAN> dr = dt.NewRow();</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>dr[0] = <SPAN style="color:#a31515;">&#8220;Nombre&#8221;</SPAN>;</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>dr[1] = <SPAN style="color:#a31515;">&#8220;Realce Online eMarketing y Diseño&#8221;</SPAN>;</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>dt.Rows.Add(dr);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:green;">// Otra fila y le asignamos el DNI</SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">DataRow</SPAN> dr1 = dt.NewRow();</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>dr1[0] = <SPAN style="color:#a31515;">&#8220;DNI&#8221;</SPAN>;</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>dr1[1] = <SPAN style="color:#a31515;">&#8220;22.345.543K&#8221;</SPAN>;</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>dt.Rows.Add(dr1);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:green;">// Otra fila con la Dirección</SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">DataRow</SPAN> dr2 = dt.NewRow();</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>dr2[0] = <SPAN style="color:#a31515;">&#8220;Dirección&#8221;</SPAN>;</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>dr2[1] = <SPAN style="color:#a31515;">&#8220;C/ La Quito 17 6º A&#8221;</SPAN>;</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>dt.Rows.Add(dr2);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:green;">// Y Otra fila con el resto de datos</SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">DataRow</SPAN> dr3 = dt.NewRow();</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>dr2[0] = <SPAN style="color:#a31515;">&#8220;CP.- &#8220;</SPAN>;</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>dr2[1] = <SPAN style="color:#a31515;">&#8220;28015 Localidad: Huelva Provincia: Huelva&#8221;</SPAN>;</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>dt.Rows.Add(dr3);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:green;">// Devuelvo el dataTable Relleno</SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:blue;">return</SPAN> dt;</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>}</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>}</SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN>Ahora creamos otra tabla con los datos del Cliente</SPAN></STRONG></P><br />
<P class="MsoNormal"><STRONG><SPAN></SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN>// DATOS DEL CLIENTE</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">PdfTable</SPAN> TablaDanosCliente = myPdfDocument.NewTable(<SPAN style="color:blue;"> new</SPAN> <SPAN style="color:#2b91af;">Font</SPAN>(<SPAN style="color:#a31515;">&#8220;Verdana&#8221;</SPAN>, 12), 3, 2, 4);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosCliente.HeadersRow.SetColors(<SPAN style="color:#2b91af;"> Color</SPAN>.White, <SPAN style="color:#2b91af;">Color</SPAN>.BurlyWood);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosCliente.SetContentAlignment( <SPAN style="color:#2b91af;">ContentAlignment</SPAN>.MiddleCenter);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosCliente.ImportDataTable( DatosCliente);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosCliente.SetColumnsWidth(<SPAN style="color:blue;">new</SPAN> <SPAN style="color:blue;">int</SPAN>[] { 20, 80 });</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosCliente.SetBorders(<SPAN style="color:#2b91af;">Color</SPAN>.Black, 1, <SPAN style="color:#2b91af;">BorderType</SPAN>.Bounds);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosCliente.HeadersRow.MergeCells();</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosCliente.HeadersRow.SetContent(<SPAN style="color:#a31515;">&#8220;DATOS DEL CLIENTE.&#8221;</SPAN>);</SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN>En este código no hay nada nuevo, y basta con decir que el DataTable DatosCliente es rellenado de la misma forma que DatosEmpresa pero con los datos del cliente obtenidos de la base de datos que estemos usando.</SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN>A continuación Creamos el resto de tablas de los importes totales con y sin los IVA y la tabla de la fecha de la factura y el número de factura obligatorios en toda factura que se precie.</SPAN></STRONG></P><br />
<P class="MsoNormal"><STRONG><SPAN></SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN>// DATOS FINALES</SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">PdfTable</SPAN> TablaDanosFinales = myPdfDocument.NewTable( <SPAN style="color:blue;">new</SPAN> <SPAN style="color:#2b91af;">Font</SPAN>(<SPAN style="color:#a31515;">&#8220;Verdana&#8221;</SPAN>, 12), 1, 3, 4);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosFinales.HeadersRow.SetColors( <SPAN style="color:#2b91af;">Color</SPAN>.White, <SPAN style="color:#2b91af;">Color</SPAN>.BurlyWood);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosFinales.SetContentAlignment(<SPAN style="color:#2b91af;"> ContentAlignment</SPAN>.MiddleCenter);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosFinales.ImportDataTable( DatosFinales);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosFinales.SetColumnsWidth(<SPAN style="color:blue;"> new</SPAN> <SPAN style="color:blue;">int</SPAN>[] { 40, 20, 40 });</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosFinales.SetBorders( <SPAN style="color:#2b91af;">Color</SPAN>.Black, 1, <SPAN style="color:#2b91af;">BorderType</SPAN>.Bounds);</SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:green;">// DATOS FECHA</SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">PdfTable</SPAN> TablaDanosFecha = myPdfDocument.NewTable(<SPAN style="color:blue;"> new</SPAN> <SPAN style="color:#2b91af;">Font</SPAN>(<SPAN style="color:#a31515;">&#8220;Verdana&#8221;</SPAN>, 12), 2, 2, 4);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosFecha.HeadersRow.SetColors(<SPAN style="color:#2b91af;">Color</SPAN>.White, <SPAN style="color:#2b91af;">Color</SPAN>.BurlyWood);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosFecha.SetContentAlignment(<SPAN style="color:#2b91af;">ContentAlignment</SPAN>.MiddleCenter);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosFecha.ImportDataTable(DatosFecha);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosFecha.SetColumnsWidth(<SPAN style="color:blue;">new</SPAN> <SPAN style="color:blue;">int</SPAN>[] { 40, 40 });</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosFecha.SetBorders(<SPAN style="color:#2b91af;">Color</SPAN>.Black, 1, <SPAN style="color:#2b91af;">BorderType</SPAN>.Bounds);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosFecha.VisibleHeaders = <SPAN style="color:blue;">false</SPAN>;</SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN>Ahora vamos a cargar una imagen corporativa en el documento para que de sensación de corporatividad y de empresa seria.</SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN>PdfImage</SPAN><SPAN> Logo = myPdfDocument.NewImage(<SPAN style="color:#2b91af;"> HttpContext</SPAN>.Current.Server.MapPath(<SPAN style="color:#a31515;">&#8220;~/imagenes/globo.jpg&#8221;</SPAN>));</SPAN></P><br />
<P class="MsoNormal"><SPAN>Debe ser una imagen JPG ya que no acepta esta versión otro formato, aunque estoy seguro que en la versión 2.0 que se está preparando (no se si ya existe) de esta librería vendrá implementada muchas mejoras.</SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN>Ahora llega la parte delicada de esta pelicula.</SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN>Tenemos que realizar un bucle para ir generando el PDF con los datos de las tablas que hemos ido creando anteriormente y posicionarlas de forma relativa en el documento.</SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN>// Here comienza el bucle para generar la tabla</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:blue;">while</SPAN> (!myPdfTable.AllTablePagesCreated)</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>{</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:green;">// Generamos una nueva página en el documento que albergará las tablas anteriores</SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">PdfPage</SPAN> newPdfPage = myPdfDocument.NewPage();</SPAN></P><br />
<P class="MsoNormal"><SPAN>// Generamos una nueva página de tablas en el documento, indicandole la posición que llevará en el documento</SPAN><SPAN><SPAN> </SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN style="color:#2b91af;">PdfTablePage</SPAN> newPdfTablePage =</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>myPdfTable.CreateTablePage(<SPAN style="color:blue;">new</SPAN> <SPAN style="color:#2b91af;">PdfArea</SPAN>(myPdfDocument, 48, 300, 500, 670));</SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:green;">// CREO LA TABLA DE LOS DATOS DE LA EMPRESA</SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">PdfTablePage</SPAN> newPdfTablePage2 =</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosNacho.CreateTablePage(<SPAN style="color:blue;">new</SPAN> <SPAN style="color:#2b91af;">PdfArea</SPAN>(myPdfDocument, 20, 20, 260, 100));</SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:green;">// CREO LA TABLA DEl CLIENTE</SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">PdfTablePage</SPAN> newPdfTablePage3 =</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosCliente.CreateTablePage(<SPAN style="color:blue;">new</SPAN> <SPAN style="color:#2b91af;">PdfArea</SPAN>(myPdfDocument, 20, 150, 260, 200));</SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:green;">// CREO LA TABLA DE FECHA Y Nº FACTURA</SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">PdfTablePage</SPAN> newPdfTablePage5 =</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosFecha.CreateTablePage(<SPAN style="color:blue;">new</SPAN> <SPAN style="color:#2b91af;">PdfArea</SPAN>(myPdfDocument, 300, 20, 150, 150));</SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:green;">// AGREGAMOS LOS OBJETOS A LA PAGINA PDF CREADA AL INICIO DEL BUCLE</SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>newPdfPage.Add(Logo, 460, 20);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>newPdfPage.Add(newPdfTablePage);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>newPdfPage.Add(newPdfTablePage2);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN></SPAN>newPdfPage.Add(newPdfTablePage3);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>newPdfPage.Add(newPdfTablePage5);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN></SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:blue;">if</SPAN> (myPdfTable.AllTablePagesCreated)</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>{</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">PdfTablePage</SPAN> newPdfTablePage4 =</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>TablaDanosFinales.CreateTablePage( <SPAN style="color:blue;">new</SPAN> <SPAN style="color:#2b91af;">PdfArea</SPAN>( myPdfDocument, 120, 700, 300, 80));</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>newPdfPage.Add(newPdfTablePage4);</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>}</SPAN></P><br />
<P class="MsoNormal"><STRONG><SPAN>}// Fin del bucle</SPAN></STRONG></P><br />
<P class="MsoNormal"><STRONG><SPAN></SPAN></STRONG></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN>Guardamos los cambios en el documento</SPAN></STRONG></P><br />
<P class="MsoNormal"><STRONG><SPAN></SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN>newPdfPage.SaveToDocument();</SPAN></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><STRONG><SPAN>Ahora exportamos el fichero,</SPAN></STRONG></P><br />
<P class="MsoNormal"><STRONG><SPAN></SPAN></STRONG></P><br />
<P class="MsoNormal"><STRONG><SPAN></SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN>documentofactura.SaveToFile(<SPAN style="color:#2b91af;"> HttpContext</SPAN>.Current.Server.MapPath(<SPAN style="color:#a31515;">&#8220;~/Public/factura.pdf&#8221;</SPAN>));</SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN>Podemos guardar en un fichero físico en nuestro servidor o podemos ponerlo a descarga directa en el navegador.</SPAN></P><br />
<P class="MsoNormal"><SPAN>Yo en mi caso, lo he guardado en un fichero fisico, que luego leo y envio por correo electrónico (donde no voy a entrar en este artículo, ya hablaremos de ello más adelante) </SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN>FileStream</SPAN><SPAN> fich = <SPAN style="color:#2b91af;">File</SPAN>.Open(<SPAN style="color:#2b91af;"> HttpContext</SPAN>.Current.Server.MapPath(<SPAN style="color:#a31515;">&#8220;~/Public/factura.pdf&#8221;</SPAN>), <SPAN style="color:#2b91af;">FileMode</SPAN>.Open);</SPAN></P><br />
<P class="MsoNormal"><STRONG><SPAN></SPAN></STRONG></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN>Creo mi objeto de la clase que envia el correo</SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">Mail</SPAN> MailSender = <SPAN style="color:blue;">new</SPAN> <SPAN style="color:#2b91af;">Mail</SPAN>();</SPAN></P><br />
<P class="MsoNormal"><STRONG><SPAN></SPAN></STRONG></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN>Creo el cuerpo del mensaje</SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:blue;">string</SPAN> body = <SPAN style="color:#a31515;">&#8220;&lt;html&gt;&lt;body&gt;Estimado usuario, adjunto se le envía la factura de su pedido. Si detecta algún fallo o anomalía contacte con la redacción a través de la web &lt;a href=\&#8221;http://www.realceonline.com\&#8221;&gt;AeRoLoCoS.eS. Gracias por la compra.&lt;/a&gt;&lt;/body&gt;&lt;/html&gt;&#8221;</SPAN>;</SPAN></P><br />
<P class="MsoNormal"><STRONG><SPAN></SPAN></STRONG></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN>Llamo a la función que envía el pdf adjunto al mail del usuario que ha realizado el pedido</SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>MailSender.enviarMailPdfAdjunto(fich, <SPAN style="color:#a31515;">&#8220;correoFROM@dominio&#8221;</SPAN>, email, <SPAN style="color:#a31515;">&#8220;Factura de compra en www.realceonline.com&#8221;</SPAN>, body, <SPAN style="color:#a31515;">&#8220;loginmailsmtp&#8221;</SPAN>, <SPAN style="color:#a31515;">&#8220;passmailsmtp&#8221;</SPAN>);</SPAN></P><br />
<P class="MsoNormal"><STRONG><SPAN></SPAN></STRONG></P><br />
<P class="MsoNormal"><STRONG><SPAN></SPAN></STRONG></P><br />
<P class="MsoNormal"><STRONG><SPAN></SPAN></STRONG></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN>Una vez enviado el fichero lo libero y lo elimino</SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>fich.Close();</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN>fich.Dispose();</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">File</SPAN>.Delete(<SPAN style="color:#2b91af;">HttpContext</SPAN>.Current.Server.MapPath(<SPAN style="color:#a31515;">&#8220;~/Public/factura.pdf&#8221;</SPAN>));</SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN>Ahora lo que hago es poner el documento generado anteriormente en descarga directa en el navegador</SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:green;">//Descargo la factura</SPAN></SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">HttpContext</SPAN>.Current.Response.ClearHeaders();</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">HttpContext</SPAN>.Current.Response.AppendHeader(<SPAN style="color:#a31515;">&#8220;Content-disposition&#8221;</SPAN>,</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:blue;">string</SPAN>.Format(<SPAN style="color:#a31515;">&#8220;attachment;filename={0}&#8221;</SPAN>, <SPAN style="color:#a31515;">&#8220;Factura.pdf&#8221;</SPAN>));</SPAN></P><br />
<P class="MsoNormal"><STRONG><SPAN></SPAN></STRONG></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN>Le indico al navegador que le voy a enviar datos de tipo de aplicación PDF para que reconozca con que programa asociarlo</SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">HttpContext</SPAN>.Current.Response.ContentType = <SPAN style="color:#a31515;">&#8220;application/pdf&#8221;</SPAN>;</SPAN></P><br />
<P class="MsoNormal"><STRONG><SPAN></SPAN></STRONG></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN>Le indico el tipo de codificación</SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">HttpContext</SPAN>.Current.Response.Charset = <SPAN style="color:#a31515;">&#8220;UTF-8&#8243;</SPAN>;</SPAN></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">HttpContext</SPAN>.Current.Response.ContentEncoding = System.Text.<SPAN style="color:#2b91af;">Encoding</SPAN>.Default;</SPAN></P><br />
<P class="MsoNormal"><STRONG><SPAN></SPAN></STRONG></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN>Devuelvo el fichero PDF generado como un Stream en memoria y se lo asocio al OutputStream de lo que voy a delvolver al navegador</SPAN></STRONG><SPAN> <SPAN></SPAN>documentofactura.SaveToStream(<SPAN style="color:#2b91af;">HttpContext</SPAN>.Current.Response.OutputStream);</SPAN></P><br />
<P class="MsoNormal"><STRONG><SPAN></SPAN></STRONG></P><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><br />
<P class="MsoNormal"><STRONG><SPAN>Finalizo la operación</SPAN></STRONG></P><br />
<P class="MsoNormal"><SPAN><SPAN></SPAN><SPAN style="color:#2b91af;">HttpContext</SPAN>.Current.Response.End();</SPAN></P><br />
<P class="MsoNormal"><SPAN></SPAN></P><br />
<H2>Como muestra un Botón :</H2><br />
<DIV class="mceTemp mceIEcenter"><br />
<DL class="wp-caption aligncenter"><br />
<DT class="wp-caption-dt"><A href="http://aplicacioneswebonline.files.wordpress.com/2008/07/facturaaspnetgiospdf.jpg"><IMG class="size-medium wp-image-10" alt="Generación de PDF con ASP.NET. Desarrollo y diseño Web a medida." src="http://aplicacioneswebonline.files.wordpress.com/2008/07/facturaaspnetgiospdf.jpg?w=300" width="300" height="175"></A></DT><br />
<DD class="wp-caption-dd">Generación de PDF con ASP.NET. Desarrollo y diseño Web a medida.</DD></DL></DIV></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></P></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/aplicacioneswebonline.wordpress.com/9/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/aplicacioneswebonline.wordpress.com/9/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aplicacioneswebonline.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aplicacioneswebonline.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/aplicacioneswebonline.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/aplicacioneswebonline.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/aplicacioneswebonline.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/aplicacioneswebonline.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/aplicacioneswebonline.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/aplicacioneswebonline.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/aplicacioneswebonline.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/aplicacioneswebonline.wordpress.com/9/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aplicacioneswebonline.wordpress.com&blog=3928443&post=9&subd=aplicacioneswebonline&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://aplicacioneswebonline.wordpress.com/2008/07/18/generar-factura-en-pdf-con-aspnet/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6a7b4f0aaf7271969d09962a5ae408e3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">makinsc</media:title>
		</media:content>
	</item>
		<item>
		<title>USANDO EL FRAMEWORK LIGHTBOX EN PROYECTOS WEB</title>
		<link>http://aplicacioneswebonline.wordpress.com/2008/06/24/usando-el-framework-lightbox-en-proyectos-web-aspnet/</link>
		<comments>http://aplicacioneswebonline.wordpress.com/2008/06/24/usando-el-framework-lightbox-en-proyectos-web-aspnet/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 22:53:19 +0000</pubDate>
		<dc:creator>makinsc</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Diseño Web]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[publicidad online]]></category>
		<category><![CDATA[Software online]]></category>

		<guid isPermaLink="false">http://aplicacioneswebonline.wordpress.com/?p=6</guid>
		<description><![CDATA[Creación de una página Web para mostrar una ventana en modo popup con el framework Axaj - LightBox. Integración de Lightbox con proyectos ASP.NET<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aplicacioneswebonline.wordpress.com&blog=3928443&post=6&subd=aplicacioneswebonline&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p class="MsoNormal">Hace cosa de 1 año, descubrí un framework para realizar cosas al estilo AJAX en mis proyectos con ASP.NET. Este framework permite mostrar espectaculares pop-ups con imágenes y grupos de imágenes. Consiste en cargar una serie de ficheros de Script (JavaScript) y CSS en el código de nuestra página, que te permitirán poder mostrar una ventana por encima de la página contenedora, de forma que todo el contenido quede bloqueado centrándose en la ventana que se ha superpuesto.</p>
<p class="MsoNormal">Visor de Imágenes y popup de formularios son los casos de uso típicos en los que suelo usarlo.</p>
<p class="MsoNormal">Permite mostrar espectaculares pop-ups con imágenes y grupos de imágenes.</p>
<p class="MsoNormal">Las instrucciones para usarlo son las siguientes:</p>
<p class="MsoNormal">Para abrir una ventana en modo popup con esta librería :</p>
<p><strong>Descargar las librerías de <a title="Descargar librer�as Ajax LightBox" href="http://www.tucasatualquiler.com/blog/Ajax_lightbox.rar" target="_blank">aqui</a></strong></p>
<p><strong>Crear un HTML con el siguiente código en la cabecera:</strong></p>
<p class="MsoListParagraphCxSpMiddle">&lt;head&gt;<span> </span></p>
<p class="MsoListParagraphCxSpMiddle">&lt;title&gt;AJAX con LIGHTBOX&lt;/title&gt;<span> </span></p>
<p class="MsoListParagraphCxSpMiddle"><span> </span>&lt;!—aquí se carga la hoja de estilos que propicia el efecto background &#8211;&gt;<span> </span><span> </span></p>
<p class="MsoListParagraphCxSpMiddle"><span> </span>&lt;link rel=&#8221;stylesheet&#8221; href=&#8221;css/lightbox.css&#8221; type=&#8221;text/css&#8221; media=&#8221;screen&#8221; /&gt;</p>
<p class="MsoListParagraphCxSpMiddle">&lt;!—Aquí se cargan los 3 Javascripts que son necesarios para ejecutar el framework &#8211;&gt;<span> </span></p>
<p class="MsoListParagraphCxSpMiddle">&lt;script src=&#8221;js/prototype.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;</p>
<p class="MsoListParagraphCxSpMiddle">&lt;script src=&#8221;js/scriptaculous.js?load=effects&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;</p>
<p class="MsoListParagraphCxSpMiddle">&lt;script src=&#8221;js/lightbox.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;</p>
<p class="MsoListParagraphCxSpMiddle">&lt;/head&gt;</p>
<p class="MsoListParagraphCxSpMiddle">
<p class="MsoListParagraphCxSpMiddle">Mucho cuidado en este paso al poner las rutas tanto del fichero externo lightbox.css como el de los scripts ya que si nos equivocamos en la ruta, no funcionará ya que no encontrará los scripts a ejecutar (obvio)</p>
<p class="MsoListParagraphCxSpMiddle"><span><span><span> </span></span></span><!--[endif]--><strong>En el body de la página creada anteriormente escribimos un enlace a la página que queremos mostrar como popup, con el atributo rel correspondiente</strong></p>
<p class="MsoListParagraphCxSpMiddle">&lt;a href=”default.aspx” rel=”lightbox_text”&gt;Ver página popup&lt;/a&gt;</p>
<p class="MsoListParagraphCxSpMiddle" style="text-indent:-18pt;text-align:center;"><strong> Guardamos el Fichero creado y lo ejecutamos en el navegador.</strong></p>
<p class="MsoListParagraphCxSpMiddle" style="text-indent:-18pt;text-align:center;">Este debe ser el resultado Final</p>
<p class="MsoListParagraphCxSpMiddle" style="text-indent:-18pt;"><!--[if !supportLists]--></p>
<p class="MsoListParagraphCxSpMiddle"><a href="http://www.aerolocos.es"><img class="aligncenter size-medium wp-image-7" src="http://aplicacioneswebonline.files.wordpress.com/2008/06/resultadofinal.jpg?w=300&#038;h=180" border="0" alt="Diseño Web con Framework Ajax" width="300" height="180" /></a></p>
<p class="MsoListParagraphCxSpMiddle">No está nada mal el efecto, pero lo bueno de todo esto es que se puede adaptar a nuestras necesidades solo sabiendo un poco de Javascript y cacharreando un poco. Como muestra un botón.</p>
<p class="MsoListParagraphCxSpMiddle">La librería, por defecto, te crea un botón que te cierra la ventana popup, pero si queremos crear otro botón un poco más intuitivo, lo que debemos hacer es solo que en el evento click de ese botón de cerrar, ejecute la instrucción javascript : <span style="font-size:12pt;line-height:115%;">javascript:myLightbox.end(); return false;</span></p>
<p class="MsoListParagraphCxSpMiddle"><span style="font-size:12pt;line-height:115%;color:black;">En mi caso, al ser un botón de ASP.NET, se puede realizar de la siguiente manera:</span></p>
<p class="MsoListParagraphCxSpLast"><span style="font-size:12pt;line-height:115%;">&lt;</span><span style="font-size:12pt;line-height:115%;">asp</span><span style="font-size:12pt;line-height:115%;">:</span><span style="font-size:12pt;line-height:115%;">Button</span><span style="font-size:12pt;line-height:115%;"> <span style="color:red;">ID</span><span style="color:blue;">=&#8221;btnCancelarVotar&#8221;</span> <span style="color:red;">OnClientClick</span><span style="color:blue;">=&#8221;javascript:myLightbox.end(); return false;&#8221;</span> <span style="color:red;">runat</span><span style="color:blue;">=&#8221;server&#8221;</span> <span style="color:red;">Text</span><span style="color:blue;">=&#8221;Cancelar&#8221;</span> <span style="color:blue;">/&gt;</span></span></p>
<p>Este es el efecto final :</p>
<p><a href="http://aplicacioneswebonline.files.wordpress.com/2008/06/boton_cancelar.jpg"><img class="aligncenter size-medium wp-image-8" src="http://aplicacioneswebonline.files.wordpress.com/2008/06/boton_cancelar.jpg?w=300&#038;h=180" border="0" alt="" width="300" height="180" /></a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/aplicacioneswebonline.wordpress.com/6/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/aplicacioneswebonline.wordpress.com/6/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aplicacioneswebonline.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aplicacioneswebonline.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/aplicacioneswebonline.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/aplicacioneswebonline.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/aplicacioneswebonline.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/aplicacioneswebonline.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/aplicacioneswebonline.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/aplicacioneswebonline.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/aplicacioneswebonline.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/aplicacioneswebonline.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aplicacioneswebonline.wordpress.com&blog=3928443&post=6&subd=aplicacioneswebonline&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://aplicacioneswebonline.wordpress.com/2008/06/24/usando-el-framework-lightbox-en-proyectos-web-aspnet/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6a7b4f0aaf7271969d09962a5ae408e3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">makinsc</media:title>
		</media:content>

		<media:content url="http://aplicacioneswebonline.files.wordpress.com/2008/06/resultadofinal.jpg?w=300" medium="image">
			<media:title type="html">Diseño Web con Framework Ajax</media:title>
		</media:content>

		<media:content url="http://aplicacioneswebonline.files.wordpress.com/2008/06/boton_cancelar.jpg?w=300" medium="image" />
	</item>
		<item>
		<title>Investigadores rusos desarrollan &#8220;casco&#8221; que permite manejar robots y ordenadores con la mente</title>
		<link>http://aplicacioneswebonline.wordpress.com/2008/06/16/investigadores-rusos-desarrollan-casco-que-permite-manejar-robots-y-ordenadores-con-la-mente/</link>
		<comments>http://aplicacioneswebonline.wordpress.com/2008/06/16/investigadores-rusos-desarrollan-casco-que-permite-manejar-robots-y-ordenadores-con-la-mente/#comments</comments>
		<pubDate>Mon, 16 Jun 2008 13:31:41 +0000</pubDate>
		<dc:creator>makinsc</dc:creator>
				<category><![CDATA[Noticias de Tecnología]]></category>

		<guid isPermaLink="false">http://aplicacioneswebonline.wordpress.com/?p=4</guid>
		<description><![CDATA[
Esta puede ser la revolución que el mercado estaba esperando&#8230;. A través del cuero cabelludo se recogen los estímulos nerviosos de las partes del cerebro encargadas de ciertas funciones y mediante un procesador, se convierten en instrucciones maquina.
Me imagino que cuando esto salga a la luz, el desarrollo de interfaces hombre-maquina evoloucionará considerablemente, sobretodo para [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aplicacioneswebonline.wordpress.com&blog=3928443&post=4&subd=aplicacioneswebonline&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><span style="text-align:center; display: block;"><a href="http://aplicacioneswebonline.wordpress.com/2008/06/16/investigadores-rusos-desarrollan-casco-que-permite-manejar-robots-y-ordenadores-con-la-mente/"><img src="http://img.youtube.com/vi/kl43TEFb91A/2.jpg" alt="" /></a></span></p>
<p>Esta puede ser la revolución que el mercado estaba esperando&#8230;. A través del cuero cabelludo se recogen los estímulos nerviosos de las partes del cerebro encargadas de ciertas funciones y mediante un procesador, se convierten en instrucciones maquina.</p>
<p>Me imagino que cuando esto salga a la luz, el desarrollo de interfaces hombre-maquina evoloucionará considerablemente, sobretodo para sectores como los videojuegos de realdad virtual y de discapacitados.</p>
<p>Un bomba.</p>
<p>fuente : <a href="http://weblogs.madrimasd.org/sistemas_inteligentes/archive/2008/06/16/94725.aspx">http://weblogs.madrimasd.org/sistemas_inteligentes/archive/2008/06/16/94725.aspx</a></p>
<p> </p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/aplicacioneswebonline.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/aplicacioneswebonline.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aplicacioneswebonline.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aplicacioneswebonline.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/aplicacioneswebonline.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/aplicacioneswebonline.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/aplicacioneswebonline.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/aplicacioneswebonline.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/aplicacioneswebonline.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/aplicacioneswebonline.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/aplicacioneswebonline.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/aplicacioneswebonline.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aplicacioneswebonline.wordpress.com&blog=3928443&post=4&subd=aplicacioneswebonline&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://aplicacioneswebonline.wordpress.com/2008/06/16/investigadores-rusos-desarrollan-casco-que-permite-manejar-robots-y-ordenadores-con-la-mente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6a7b4f0aaf7271969d09962a5ae408e3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">makinsc</media:title>
		</media:content>

		<media:content url="http://img.youtube.com/vi/kl43TEFb91A/2.jpg" medium="image" />
	</item>
		<item>
		<title>Presentación de mi nuevo blog sobre desarrollo de aplicaciones con tecnologías de Microsoft</title>
		<link>http://aplicacioneswebonline.wordpress.com/2008/06/08/presentacion-en-sociedad/</link>
		<comments>http://aplicacioneswebonline.wordpress.com/2008/06/08/presentacion-en-sociedad/#comments</comments>
		<pubDate>Sun, 08 Jun 2008 18:35:30 +0000</pubDate>
		<dc:creator>makinsc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Buenas, quería presentarme primero para que mis lectores puedan conocer a quien leen. Soy nuevo en esto de los blogs y poco a poco iré cogiendo soltura. En primer lugar mi nombre es Joaquín Salguero y vivo en Huelva. Estudié Ingeniería técnica de informática de sistemas en la escuela politécnica superior de la Rábida en [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aplicacioneswebonline.wordpress.com&blog=3928443&post=1&subd=aplicacioneswebonline&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p class="MsoNormal">Buenas, quería presentarme primero para que mis lectores puedan conocer a quien leen. Soy nuevo en esto de los blogs y poco a poco iré cogiendo soltura. En primer lugar mi nombre es Joaquín Salguero y vivo en Huelva. Estudié Ingeniería técnica de informática de sistemas en la escuela politécnica superior de la Rábida en Palos de la Frontera, Huelva. Durante la carrera, tuve la oportunidad, gracias al programa de prácticas de SOIPEA de la Universidad de Huelva, de realizarlas en dos de las mejores empresas de mi ciudad. CEPSA refinería de la Rábida, donde tuve mi primera toma de contacto con la administración de sistemas y con el mantenimiento informático, donde me encontraba a mis anchas. Aprendí bastante, teniendo en cuenta que por aquella época no tenía aún ni idea de nada, simplemente intentaba aprobar las que podía y me dedicaba ir saliendo del paso que ya era bastante. Al año siguiente, dada la gran experiencia tomada en las prácticas del año anterior, decidí volverme a apuntar al programa de prácticas. Mi gran suerte fue caer en una de las mejores empresas de las que podía haber caído. E.M.T.U.S.A.<span> </span>Allí conocí mucha gente, pero sobre todo conocí a mi gran amor desde aquel día “LA TECNOLOGÍA .NET” (Siempre después de la de carne y hueso…<span style="font-family:Wingdings;"><span>J</span></span>). En esa empresa desarrollamos un software de gestión donde tuve la oportunidad de aportar mi granito de arena en la parte sobre todo de informes con Crystal Report, donde me convertí en un experto. La herramienta llevaba gran parte de la administración de la empresa. Usuarios, remesa de tarjetas, facturación… y tenía muchas muchas líneas de código, que inicialmente estaban un poco caóticas, pero conforme fuimos aprendiendo la tecnología ya fuimos modulando cada vez más el código hasta que quedó una aplicación bastante aceptable. En aquella época estaba muy reciente esa tecnología, y trabajábamos con el Framework 1.0 de Microsoft. Tras terminar las prácticas y el curso, a falta de 2 asignaturas para terminar la carrera, me fui a Inglaterra, más en concreto a la ciudad de Chester, donde estuve 2 meses y pude aprender a desenvolverme de forma aceptable con el Ingés. Luego regresé a España y terminé mi carrera. Nada más terminar, comencé a buscar trabajo, cosa bastante difícil en mi ciudad, Huelva. Así que decidí buscar trabajo fuera, tras varias entrevistas frustradas. En menos de un mes ya me llamaron de una gran consultora, CORITEL. Me hicieron unas pruebas escritas de tipo test de inteligencia, y más tarde una entrevista personal, tras la cual pasé a una de las famosas “becas” para luego poder pasar a plantilla ya con un contrato de los de verdad <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> . Durante la beca realicé un mes de ANSI C con sistemas UNIX y luego pasé a Visual Basic 6, lo cual me gustaba muchísimo más que C… Tras terminar mi beca, pasé a contrato y entré en un proyecto de ASP.NET, que no conocía en profundidad y solo había podido cacharrear con un par de manuales del amigo <a title="El Guille" href="http://www.elguille.info/" target="_blank">Guille</a>. Aquí conocí mi 2º gran amor “ASP.NET y SQL Server 2000”. Nunca había trabajado en equipo de aquella forma con un control de código fuente (Source Safe ) , con servidores disponibles, certificados de seguridad, y mucho muuucho café. Aprendí mucho la verdad con mis Jefes José Carlos y Salvador (saludos a ambos). Allí realizamos una aplicación para Recursos Humanos, donde se calculaba el banding anual de todos los empleados y se le calculaban las subidas de nivel y de salario correspondiente según unas notas y demás historias. Muy divertido e instructivo, la verdad.<span> </span></p>
<p class="MsoNormal">Después de un tiempo, pasé a trabajar a una <a title="Agencia de comunicación y marketing online" href="http://www.realceonline.com" target="_blank">agencia de comunicación y marketing online</a>, donde conocí una nueva versión de mi mismo, como coDirector del departamento de nuevas tecnologías (NNTT) junto con otros compañeros y amigos. Allí aprendí la parte de la tecnología .NET y Java aplicada a aplicaciones comerciales orientadas al marketing online. Ya por estos tiempos trabajábamos con el Framework 1.1 y C# con SQL Server 2000, XML y Flash, mucho flash ¡! Aquí trabajé para grandes clientes, como Real Madrid, ONO, UniversalMusic, Garrigues abogados, Ayuntamiento de Madrid, TELCEL de México, DECATHLON, entre otros cuantos, que realizaban sus <a title="Páginas Web corporativas con diseño original" href="http://www.realceonline.com/servicios/web.aspx" target="_blank">páginas Web corporativas</a> y <a title="Promoción online, posicionamiento Web, marketing electrónico" href="http://www.realceonline.com/servicios/emarketing.aspx" target="_blank">campañas de publicidad online </a>con nosotros. Cuando creí haber tocado techo en esta empresa, opté por volver a mi tierra, donde me ofrecieron ya con la experiencia adquirida un buen puesto de trabajo con contrato indefinido. Pues nada, para casa. Menos mal, pude eludir ese año el crudo verano madrileño, donde todo es calor, obras en los metros y más calor todavía. ¡Qué bien, estaba en casita ¡!! La playa, el sol, el olor a marisma, la pesca, mis amigos de toda la vida.. ¡! Esto si que es vida. El nuevo trabajo era en una empresa de Ayamonte que se dedicaba a la creación de un mega-Software para las Sociedades de Garantía Recíproca Españolas. De allí la verdad que con lo que más me quedo es con la gente que conocí. He conseguido hacer muy buenos amigos allí y aprendí mucho de ellos. Trabajábamos ya con el Framework 2.0 y el flamante Visual Studio 2005 con TFS como control de código y SQL SERVER 2005 como gestor de bases de datos. En aquel momento ya empezaba a rondar por mi cabeza y la de mi actual socio montar algo por nuestra cuenta, pero la cosa de momento no salió en una primera instancia, así que seguimos por cuenta ajena. Pasado un año de estar en Ayamonte vimos recompensados nuestros esfuerzos en la realización de planes de empresa, sobre todo de mi socio y gran amigo Rafael Vizcaíno, al cual mando un fuerte abrazo, cuando la querida <a title="Diputación de Huelva" href="http://www.diphuelva.es/" target="_blank">Diputación de Huelva</a> nos aprobó la concesión de un local habilitado con internet y de unos 35 metros cuadrados donde poder desempeñar nuestra actividad. Tras esto, decidimos lanzarnos a la aventura montando lo que hoy es <a title="Aplicaciones Web y Publicidad" href="http://www.realceonline.com" target="_blank">Realce Online eMarketing y Diseño</a>, dejando todo nuestros lazos con el mundo laboral por cuenta ajena para convertirnos en dos empresarios que trabajarían por conseguir levantar una empresa de nuevas tecnologías en un ambiente tan hostil para ello como es nuestra querida ciudad de Huelva.</p>
<p class="MsoNormal">A día de hoy aun no nos arrepentimos de habernos lanzado al mundo empresarial por cuenta propia, con sus pros y sus contras, pero sobre todo con la satisfacción de crear tus propias aplicaciones y luego distribuirlas, que es como ver crecer a tu perro o a tu pájaro desde pequeño.</p>
<p class="MsoNormal">En fin, este ha sido el resumen de mi trayectoria hasta este momento de mi vida, en el que doy el salto hacia la blogosfera, espero con buen pie. En próximos artículos daré más detalles sobre mi <a title="Desarrollo de software a medida" href="http://www.realceonline.com/servicios/software.aspx" target="_blank">empresa de desarrollo de software</a> y sobre todo, hablaremos sobre tecnologías Microsoft.</p>
<p class="MsoNormal">Saludos y comenzamos….</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/aplicacioneswebonline.wordpress.com/1/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/aplicacioneswebonline.wordpress.com/1/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aplicacioneswebonline.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aplicacioneswebonline.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/aplicacioneswebonline.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/aplicacioneswebonline.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/aplicacioneswebonline.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/aplicacioneswebonline.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/aplicacioneswebonline.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/aplicacioneswebonline.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/aplicacioneswebonline.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/aplicacioneswebonline.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aplicacioneswebonline.wordpress.com&blog=3928443&post=1&subd=aplicacioneswebonline&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://aplicacioneswebonline.wordpress.com/2008/06/08/presentacion-en-sociedad/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6a7b4f0aaf7271969d09962a5ae408e3?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">makinsc</media:title>
		</media:content>
	</item>
	</channel>
</rss>