<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CU4MQn86cSp7ImA9WhRaE0o.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184</id><updated>2012-02-16T07:33:03.119+01:00</updated><category term="c#" /><category term="ASP" /><category term="VS" /><category term="MVC" /><category term="VB" /><category term="Controles" /><title>JTorrecilla</title><subtitle type="html">Mis experiencias programando con Visual Studio, ASP, VB, C#...
If you are interested of any article in other language please contact me.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://netjtorrecilla.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>30</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Jtorrecilla" /><feedburner:info uri="jtorrecilla" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CkIDRXc6fip7ImA9Wx5bEUQ.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-1593378472564992903</id><published>2010-10-27T16:42:00.000+02:00</published><updated>2010-10-27T16:42:54.916+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-27T16:42:54.916+02:00</app:edited><title>Nuevo Blog en GEEKS</title><content type="html">Hola a todos,&lt;br /&gt;
&lt;br /&gt;
Ahora voy a empezar a escribir en &lt;a href="http://geeks.ms/blogs/jtorrecilla/default.aspx"&gt;GEEKS.MS &lt;/a&gt;. Espero Leeros por alli y que me sigais leyendo.&lt;br /&gt;
&lt;br /&gt;
Lo primero que quiero hacer es dar las gracias por el Blog tanto a Josue Yeray, como a Rodrigo, por darme la oportunidad de añadir mi granito de arena a Geeks.&lt;br /&gt;
Este blog va a tratar de mis experiencias programando en Tecnologías Microsoft, desde VB.Net y C# hasta SilverLight, aplicaciones Windows, Web, Algo para Mobile, Bases de Datos, Controles personalizados...&lt;br /&gt;
Espero que os guste, y leer vuestros comentarios.&lt;br /&gt;
Un saludo a todos!&lt;br /&gt;
&lt;br /&gt;
Un saludo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-1593378472564992903?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dY-xl8xja2tDwVliJfcMNboC44Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dY-xl8xja2tDwVliJfcMNboC44Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dY-xl8xja2tDwVliJfcMNboC44Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dY-xl8xja2tDwVliJfcMNboC44Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/9-N3h0YMRFY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/1593378472564992903/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/10/nuevo-blog-en-geeks.html#comment-form" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/1593378472564992903?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/1593378472564992903?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/9-N3h0YMRFY/nuevo-blog-en-geeks.html" title="Nuevo Blog en GEEKS" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/10/nuevo-blog-en-geeks.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIAQHw-eyp7ImA9Wx5UFEo.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-3541227144086173853</id><published>2010-10-19T09:29:00.002+02:00</published><updated>2010-10-19T10:55:41.253+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-19T10:55:41.253+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVC" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP" /><title>MVC3: Validación de Elementos HTML condicional</title><content type="html">&lt;p&gt;Hasta ahora, tanto en aplicaciones WebForms como en ASP.NET MVC1 y ASP.NET MVC2, si queríamos dejar de comprobar la introducción de código HTML en alguno de los campos de nuestros formularios, teníamos que permitirlo en todos los campos, y a través de nuestras propias validaciones tratar de no permitirlo (javascript o código servidor). &lt;p&gt;En la Beta de MVC3, ha aparecido una modificación en el Atributo ValidateInput, que nos permite excluir algunos campos a la hora de validar nuestro formulario. &lt;p&gt;El nuevo parámetro del atributo, se llama Exclude, y nos permite introducir distintos campos de nuestro formulario separados por comas. Aquí va un ejemplo de la sintaxis: &lt;p&gt;[ValidateInput(true,Exclude="ContentPost")] &lt;p&gt;public ActionResult CreatePost()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Contenido de la vista.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Espero que os sea de utilidad!&lt;/p&gt;&lt;p&gt;Saludos.&lt;/p&gt;&lt;br /&gt;
PD: se me olvido citar la fuente &lt;a href="http://www.asp.net/learn/whitepapers/mvc3-release-notes#0.1__Toc274034226"&gt;WhitePaper MVC 3&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-3541227144086173853?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fJI2EfUWPyfTDjCcdfGQxzuA9Dg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fJI2EfUWPyfTDjCcdfGQxzuA9Dg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fJI2EfUWPyfTDjCcdfGQxzuA9Dg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fJI2EfUWPyfTDjCcdfGQxzuA9Dg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/jAKer1X3n7I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/3541227144086173853/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/10/mvc3-validacion-de-elementos-html.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/3541227144086173853?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/3541227144086173853?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/jAKer1X3n7I/mvc3-validacion-de-elementos-html.html" title="MVC3: Validación de Elementos HTML condicional" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/10/mvc3-validacion-de-elementos-html.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIMQ308eSp7ImA9Wx5UFE0.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-5923048719473442526</id><published>2010-10-18T14:56:00.001+02:00</published><updated>2010-10-18T14:56:22.371+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-18T14:56:22.371+02:00</app:edited><title>CODEPLEX: TabControl con mejoras</title><content type="html">&lt;p&gt;Desde las versiones antiguas de Visual Studio, me he encontrado con un pequeño problema a la hora de trabajar con el TabControl: Ocultar / Mostrar las TabPages.&lt;/p&gt; &lt;p&gt;Pese a que el control TabControl, presenta una propiedad “TabPageCollection” que alberga todas las TabPages del Control, y a su vez cada TabPage tienen unos métodos Hide y Show, su funcionamiento no es el que “yo” desearía. Me explico:&lt;/p&gt; &lt;p&gt;- Si yo llamo al método Hide de un TabPage, me gustaría que este TabPage no fuera visible de cara al usuario. &lt;/p&gt;&lt;a name='more'&gt;&lt;/a&gt; &lt;p&gt;¿Qué sucede cuando llamo al método Hide?: Puesto que el objeto &lt;a href="http://msdn.microsoft.com/es-es/library/system.windows.forms.tabpage.aspx" target="_blank"&gt;TabPage&lt;/a&gt;, herede del control &lt;a href="http://msdn.microsoft.com/es-es/library/system.windows.forms.panel.aspx" target="_blank"&gt;Panel&lt;/a&gt;, el método Hide, se encarga de ocultar el panel que se muestra en el control TabControl y todo su contenido, pero no la cabecera de la “pestaña”.&lt;/p&gt; &lt;p&gt;Del mismo modo el método Show() lo que va a realizar es mostrar su contenido.&lt;/p&gt; &lt;p&gt;Por ello, he creado un control de Usuario para implementar los métodos HideTabPage y ShowTabPage.&lt;/p&gt; &lt;p&gt;Para poder realizar estos métodos he creado una lista privada para manejar las “TabPages”:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;List&amp;lt;TabPage&amp;gt; AllTabPages;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Para su correcto funcionamiento, en el Constructor de la Clase, inicializo la lista:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;AllTabPages = new List&amp;lt;TabPage&amp;gt;();&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Y ya se puede implementar la funcionalidad:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;public void HideTabPage(TabPage tb)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (TabPages.Contains(tb))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (TabPage t in TabPages)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!AllTabPages.Contains(t))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AllTabPages.Add(t);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.TabPages.Remove(tb);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;public void ShowTabPage(TabPage tb)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((AllTabPages.Contains(tb)) &amp;amp;&amp;amp; (!TabPages.Contains(tb)))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.TabPages.Add(tb);  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Para su utilización bastaría con hacer una llamada de la siguiente manera:  &lt;blockquote&gt; &lt;p&gt;extTabControl1.HideTabPage(TabPage1);  &lt;p&gt;o  &lt;p&gt;extTabControl1.ShowTabPage(TabPage1);&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;Además de Ocultar y Mostrar un TabPage, he generado la posibilidad de Habilitar / Deshabilitar TabPages y que el control no entre en TabPages Deshabilitadas. Para lograrlo he sobrescrito el método &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.forms.tabcontrol.selecting.aspx" target="_blank"&gt;Selecting&lt;/a&gt; del control:  &lt;blockquote&gt; &lt;p&gt;protected override void OnSelecting(TabControlCancelEventArgs e)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (e.TabPageIndex &amp;gt; -1)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TabPage tb = TabPages[e.TabPageIndex];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (tb.Enabled == false)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.Cancel = true;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base.OnSelecting(e);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Os dejo el enlace a &lt;a href="http://extendedtabcontrol.codeplex.com/" target="_blank"&gt;CodePlex&lt;/a&gt; donde lo he publicado.&lt;/p&gt; &lt;p&gt;Si tenéis cualquier duda, aquí me estoy.&lt;/p&gt; &lt;p&gt;Saludos&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-5923048719473442526?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4Tx5W-MiEFfhiYYOCzPWysc83Cs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4Tx5W-MiEFfhiYYOCzPWysc83Cs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4Tx5W-MiEFfhiYYOCzPWysc83Cs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4Tx5W-MiEFfhiYYOCzPWysc83Cs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/LszOZCCzKZ0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/5923048719473442526/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/10/codeplex-tabcontrol-con-mejoras.html#comment-form" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/5923048719473442526?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/5923048719473442526?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/LszOZCCzKZ0/codeplex-tabcontrol-con-mejoras.html" title="CODEPLEX: TabControl con mejoras" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/10/codeplex-tabcontrol-con-mejoras.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQBSXY9fip7ImA9Wx5VGUo.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-5882493887876266638</id><published>2010-10-13T15:24:00.002+02:00</published><updated>2010-10-13T15:25:58.866+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-13T15:25:58.866+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVC" /><category scheme="http://www.blogger.com/atom/ns#" term="c#" /><title>MVC: Helper WebGrid(3)</title><content type="html">&lt;p&gt;Días atrás, os hable de este helper(&lt;a href="http://netjtorrecilla.blogspot.com/2010/10/mvc3-helper-webgrid.html" target="_blank"&gt;aquí&lt;/a&gt; y &lt;a href="http://netjtorrecilla.blogspot.com/2010/10/mvc3-helper-webgrid-2.html" target="_blank"&gt;aquí&lt;/a&gt;). Hoy voy a dar mas detalles de la personalización que nos aporta.&lt;/p&gt;&lt;a name='more'&gt;&lt;/a&gt; &lt;p&gt;La función GetHtml(), presenta un parámetro que es “Columns”, el cual es del tipo "IEnumerable&amp;lt;WebGridColumn&amp;gt;”.&lt;/p&gt;&lt;p&gt;Si no lo especificamos al invocar a la función, por defecto, se van a visualizar las distintas propiedades de nuestro origen de datos.&lt;/p&gt;&lt;p&gt;Si queremos personalizar las columnas, podríamos hacerlo de la siguiente manera:&lt;/p&gt;&lt;p&gt;1) Declaramos un objeto que Implemente IEnumerable&amp;lt;T&amp;gt; como puede ser una Lista:&lt;/p&gt;&lt;p&gt;List&amp;lt;WebGridColumn&amp;gt; columnas= new List&amp;lt;WebGridColumn&amp;gt;();&lt;/p&gt;&lt;p&gt;2) Agregar las columnas que deseemos a la lista&lt;/p&gt;&lt;p&gt;Para añadir una nueva columna, podemos hacerlo de la siguiente manera:&lt;/p&gt;&lt;p&gt;columnas.Add(new WebGridColumn {[Propiedades] });&lt;/p&gt;&lt;p&gt;[Propiedades]: podemos definir las siguientes propiedades de las columnas:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;ColumnName: Nombre de la Columna.&lt;/li&gt;
&lt;li&gt;Header: Nombre que va a visualizarse en la cabecera de la tabla.&lt;/li&gt;
&lt;li&gt;CanSort: Va a indicar si la tabla se puede ordenar o no, por la columna indicada.&lt;/li&gt;
&lt;li&gt;Style: Estilo que se va a aplicar a las celdas de esta columna.&lt;/li&gt;
&lt;li&gt;Format: Vamos a definir el contenido y el formato de cada celda.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Por defecto podemos agregar nuestras columnas del módelo de la siguente manera:&lt;/p&gt;&lt;p&gt;columnas.Add(new WebGridColumn { ColumnName = "EmployeeHireDate", Header = "Hire Date", CanSort = true, Format = item =&amp;gt; item.EmployeeHireDate }); &lt;p&gt;El formato se realiza a través de una expresion Lambda y con un tipo dinamico. &lt;p&gt;Podemos añadir columnas, que sean del tipo MvcHtmlString, de la siguiente manera (el ejemplo es con un ActionLink): &lt;p&gt;columnas.Add(new WebGridColumn { ColumnName = "Actions", Header = "",&amp;nbsp; Format = item =&amp;gt;&amp;nbsp; Html.ActionLink("Edit", "Edit", new { id = item.EmployeeId })&amp;nbsp;&amp;nbsp; });&lt;br /&gt;
&amp;nbsp; &lt;p&gt;3) Enlazar la lista de columnas con la función.&lt;/p&gt;&lt;p&gt;Para mostrar las columnas que deseemos, se podrá realizar de la siguiente manera:&lt;/p&gt;&lt;p&gt;grid.GetHtml(columns: columnas);&lt;/p&gt;&lt;p&gt;A la hora de definir el WebGrid, me he dado cuenta de una peculiaridad, el valor por defecto del parámetro canSort es “True”, es decir, podremos ordenar para cada una de las columnas definidas. &lt;/p&gt;&lt;p&gt;Bien esto funciona, si no asignamos el parámetro Columns de GetHtml, o Habilitamos la Propiedad CanSort de las columnas que queramos que permitan ordenación.&lt;/p&gt;&lt;p&gt;Espero que os sea de utilidad.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-5882493887876266638?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_h5GiMH5lny9wgseodPlzUvivTA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_h5GiMH5lny9wgseodPlzUvivTA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_h5GiMH5lny9wgseodPlzUvivTA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_h5GiMH5lny9wgseodPlzUvivTA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/ygBU0KSv3m0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/5882493887876266638/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/10/mvc-helper-webgrid3.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/5882493887876266638?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/5882493887876266638?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/ygBU0KSv3m0/mvc-helper-webgrid3.html" title="MVC: Helper WebGrid(3)" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/10/mvc-helper-webgrid3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkECQ34zeyp7ImA9Wx5VGUg.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-219031560387722469</id><published>2010-10-11T22:33:00.003+02:00</published><updated>2010-10-13T08:17:42.083+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-13T08:17:42.083+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVC" /><title>MVC3: Helper WebGrid (2)</title><content type="html">&lt;p&gt;Como os indicaba el otro &lt;a href="http://netjtorrecilla.blogspot.com/2010/10/mvc3-helper-webgrid.html" target="_blank"&gt;día&lt;/a&gt;, ha salido una Beta de MVC3, y han agregado el Helper WebGrid.&lt;/p&gt;&lt;a name='more'&gt;&lt;/a&gt; &lt;p&gt;El método GetHtml, del objeto, nos va a permitir a través de una serie de parámetros como se va a visualizar y las opciones que nos va a permitir:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;TableStyle: Estilo CSS predefinido para la tabla que se va a generar de forma automatica.&lt;br /&gt;
&lt;li&gt;HeaderStyle: Estilo CSS para la cabecera de la tabla.&lt;br /&gt;
&lt;li&gt;FooterStyle: Estilo CSS para el pie de la tabla.&lt;br /&gt;
&lt;li&gt;RowStyle: Estilo CSS para las filas Impares.&lt;br /&gt;
&lt;li&gt;AlternateRowStyle: Estilo CSS para las filas Pares.&lt;br /&gt;
&lt;li&gt;SelectedRowStyle: Estilo CSS de la fila seleccionada.&lt;br /&gt;
&lt;li&gt;displayHeader: Indica si se va a visualizar la cabecera de la tabla o no.&lt;br /&gt;
&lt;li&gt;fillEmptyRows: Indica si se va a rellenar hasta el numero de filas indicados en la paginación.(True/False)&lt;br /&gt;
&lt;li&gt;EmptyRowCellValue: Indica el texto que se va a introducir en las filas dejadas en blanco cuando el parámetro anterior sea True.&lt;br /&gt;
&lt;li&gt;column: Objeto de tipo IEnumerable con las columnas que se van a visualizar.&lt;br /&gt;
&lt;li&gt;Exclusions: Listado de columnas que no queremos visualizar.&lt;br /&gt;
&lt;li&gt;mode: Modo de paginado. Valores: All, FirstLast, NextPrevious y Numeric.&lt;br /&gt;
&lt;li&gt;firstText: Texto de Ir a los primeros registros.&lt;br /&gt;
&lt;li&gt;Previoustext: Texto de ir atrás.&lt;br /&gt;
&lt;li&gt;nextText:Texto de ir al siguiente.&lt;br /&gt;
&lt;li&gt;LastText: Texto de Ir a los últimos registros.&lt;br /&gt;
&lt;li&gt;NumericLinksCount: Número de enlaces a mostrar.&lt;/li&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/ul&gt;&lt;p&gt;Bueno, una vez parametricemos o no el método getHtml(), nos va a generar el código HTML, nos lo va a insertar en nuestra Vista.&lt;/p&gt;&lt;p&gt;Internamente, si hemos habilitado la paginación y ordenación nos va a generar el código que se encargue de llevar a cabo dichos métodos, sin crear ni una sola línea de código.&lt;/p&gt;&lt;p&gt;Espero que os sirva, y si tenéis cualquier duda aquí estoy.&lt;/p&gt;&lt;p&gt;Saludos!!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-219031560387722469?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BqqgPktSm5V9S2baNXr2VUY1Pzw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BqqgPktSm5V9S2baNXr2VUY1Pzw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BqqgPktSm5V9S2baNXr2VUY1Pzw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BqqgPktSm5V9S2baNXr2VUY1Pzw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/Ak46f7EE30s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/219031560387722469/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/10/mvc3-helper-webgrid-2.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/219031560387722469?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/219031560387722469?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/Ak46f7EE30s/mvc3-helper-webgrid-2.html" title="MVC3: Helper WebGrid (2)" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/10/mvc3-helper-webgrid-2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkAHQn04fSp7ImA9Wx5VGUg.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-4210177752006488307</id><published>2010-10-08T23:43:00.003+02:00</published><updated>2010-10-13T08:18:53.335+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-13T08:18:53.335+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVC" /><title>MVC3: Helper WebGrid</title><content type="html">&lt;p&gt;Como todos sabréis hace 2 día salieron grandes novedades en Microsoft, con la Beta de MVC3, NuPack y WebMatrix Beta 2 (&lt;a href="http://weblogs.asp.net/scottgu/archive/2010/10/06/announcing-nupack-asp-net-mvc-3-beta-and-webmatrix-beta-2.aspx" target="_blank"&gt;Anuncio de ScottGu&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;Este post va dedicado a un Helper agregado en MVC3 que no estaba en MVC2: WebGrid.&lt;/p&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Este Helper, nos va a permitir definir un Grid, de manera muy rápida y sencilla:&lt;/p&gt;&lt;p&gt;1º: Definirlo:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;% WebGrid grid = new WebGrid(Parámetros) %&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;2º: Hacer que se muestre:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&amp;lt;%= grid.GetHtml();%&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Como veis en la definición he indicado Parámetros. Entre los Parámetros admitidos por el constructor, encontramos los siguientes (entre otros):&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Source: Origen de Nuestros Datos. Normalmente, va a ser el resultado de una Vista, del tipo IEnumerable&amp;lt;T&amp;gt;.&lt;/li&gt;
&lt;li&gt;Columns: Nombre de las Columnas, del tipo IEnumerable.&lt;/li&gt;
&lt;li&gt;DefaultSort: Filtro por Defecto que se va a utilizar.&lt;/li&gt;
&lt;li&gt;RowsPerPage: Número de Filas por Página.&lt;/li&gt;
&lt;li&gt;CanPage: Indica si está habilitada la paginación.&lt;/li&gt;
&lt;li&gt;CanSort: Indica si está habilitada la ordenación&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;A la hora de mostrarlo con GetHtml, podemos definir que estilos CSS se van a utilizar, mañana pondré un segundo ejemplo con ello.&lt;/p&gt;&lt;p&gt;He creado un pequeño ejemplo, que podéis descargar desde &lt;a href="http://cid-3f59c33a50c6d482.office.live.com/self.aspx/.Public/MVC3%5E_WebGrid.rar" target="_blank"&gt;aquí&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Saludos&lt;/p&gt;&lt;p&gt;PD: Podéis ver un ejemplo Con Razor, en el &lt;a href="http://weblogs.asp.net/shijuvarghese/archive/2010/10/08/using-the-webgrid-helper-in-asp-net-mvc-3-beta.aspx" target="_blank"&gt;Blog de Shiju Varghese’s&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-4210177752006488307?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/n6bFNCS2Zt87s0bAnpkAD3DxGb8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n6bFNCS2Zt87s0bAnpkAD3DxGb8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/n6bFNCS2Zt87s0bAnpkAD3DxGb8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n6bFNCS2Zt87s0bAnpkAD3DxGb8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/THwuaA_BX0I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/4210177752006488307/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/10/mvc3-helper-webgrid.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/4210177752006488307?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/4210177752006488307?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/THwuaA_BX0I/mvc3-helper-webgrid.html" title="MVC3: Helper WebGrid" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/10/mvc3-helper-webgrid.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYDQ34zeyp7ImA9Wx5WF0k.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-9061871335312066066</id><published>2010-09-29T08:52:00.001+02:00</published><updated>2010-09-29T08:52:52.083+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-29T08:52:52.083+02:00</app:edited><title>SL4: Problema al definir un estilo en DataGridColumnHeader</title><content type="html">&lt;p&gt;Llevo unos días de aprendizaje con MVC y también me he metido a aprender a manejar SILVERLIGHT 4 con VS 2010.  &lt;p&gt;A través del &lt;a href="http://jyeray.blogspot.com/" target="_blank"&gt;BLOG de Josué Yeray,&lt;/a&gt;&lt;b&gt; &lt;/b&gt;he ido cogiendo muchos conceptos que también aplican a WPF.  &lt;p&gt;Bueno a lo que iba.  &lt;p&gt;Me he encontrado una problemática un tanto curiosa a la hora de intentar establecer los estilos dentro de un Control DataGrid. &lt;/p&gt;&lt;a name='more'&gt;&lt;/a&gt; &lt;p&gt;El primer paso que hice fue definir los estilos dentro del Propio XAML, de la siguiente manera:  &lt;p&gt;&lt;img src="http://img339.imageshack.us/img339/4693/codigo1.jpg"&gt;  &lt;p&gt;&lt;/p&gt; &lt;p&gt;El resultado obtenido es el siguiente:&lt;/p&gt; &lt;p&gt;&lt;img src="http://img713.imageshack.us/img713/6181/resultado1.jpg"&gt; &lt;/p&gt; &lt;p&gt;Bueno, para evitar tener que poner el mismo estilo en 15 DataGrids dije: “Vamos a ponerlo en el App.XAML, para no tener que replicarlo…”. Cual fue mi sorpresa al ver que al poner este código:&lt;/p&gt; &lt;p&gt;&lt;img src="http://img97.imageshack.us/img97/8997/codigo2.jpg"&gt; &lt;/p&gt; &lt;p&gt;Me encontré con este error:&lt;/p&gt; &lt;p&gt;&lt;img src="http://img819.imageshack.us/img819/6794/error1g.jpg"&gt; &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;He estado buscando por distintas webs hasta que encontre este &lt;a href="http://weblogs.asp.net/dwahlin/archive/2009/06/11/customizing-silverlight-3-datagrid-headers.aspx" target="_blank"&gt;enlace&lt;/a&gt;, donde explican la solución, aunque yo también os voy a poner el código para que veais el resultado:&lt;/p&gt; &lt;p&gt;Añadi el NameSpace necesario para que interpretará el ColumnHeader:&lt;/p&gt; &lt;p&gt;&lt;img src="http://img823.imageshack.us/img823/7155/solucion.jpg"&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Y una vez puesto al ejecutar el resultado es:&lt;/p&gt; &lt;p&gt;&lt;img src="http://img26.imageshack.us/img26/2532/resultado2.jpg"&gt; &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;Espero que os sea de utilidad.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Un saludo"!!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-9061871335312066066?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BT7v9y2x64uxgThXQYyI6ugGDyg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BT7v9y2x64uxgThXQYyI6ugGDyg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BT7v9y2x64uxgThXQYyI6ugGDyg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BT7v9y2x64uxgThXQYyI6ugGDyg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/jVBN1_DsfxU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/9061871335312066066/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/09/sl4-problema-al-definir-un-estilo-en.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/9061871335312066066?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/9061871335312066066?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/jVBN1_DsfxU/sl4-problema-al-definir-un-estilo-en.html" title="SL4: Problema al definir un estilo en DataGridColumnHeader" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/09/sl4-problema-al-definir-un-estilo-en.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8ASHY8eyp7ImA9Wx5XGUU.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-4225673838060113154</id><published>2010-09-20T15:20:00.000+02:00</published><updated>2010-09-20T15:20:49.873+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-20T15:20:49.873+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVC" /><category scheme="http://www.blogger.com/atom/ns#" term="VB" /><category scheme="http://www.blogger.com/atom/ns#" term="VS" /><title>Que son los Atributos y su uso en .NET</title><content type="html">Hola a tod@s.&lt;br /&gt;
&lt;br /&gt;
Llevo un tiempo OFF del Blog, porque ando haciendo un proyecto, que espero que vea la luz dentro de poco, y sobre el cual publicaré algunos artículos en el BLOG.&lt;br /&gt;
Os traigo un pequeño ejemplo hecho con MVC2  y XML.&lt;br /&gt;
Este ejemplo viene a servir para destacar el uso de los atributos en el código.&lt;br /&gt;
Si entrais &lt;a href="http://msdn.microsoft.com/es-es/library/z0w1kczw.aspx"&gt;aquí&lt;/a&gt; , podréis ver más en detalle la definición de los atributos.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Los atributos pueden aplicar a Clases, Métodos o Funciones y Propiedades.&lt;br /&gt;
Se pueden usar uno o varios sobre el mismo objeto.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Sintaxis:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;VB&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;"&lt;"Atributo([Parametros])"&gt;" _ &lt;/b&gt; (Sobras las ")&lt;br /&gt;
Clase, método o propiedad&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;C#&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;[Atributo([Parametros])]&lt;/b&gt;&lt;br /&gt;
Clase, método o propiedad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Algunos ejemplos de atributos son:&lt;br /&gt;
=&gt; &lt;a href="http://msdn.microsoft.com/es-es/library/system.serializableattribute.aspx"&gt;Serializable&lt;/a&gt;: Permite guardar una clase como un fichero XML a través de un Serializer.&lt;br /&gt;
=&gt; &lt;a href="http://msdn.microsoft.com/es-es/library/microsoft.build.framework.requiredattribute.aspx"&gt;Required&lt;/a&gt;: hace indicar que una propiedad es obligatoria. Acepta el parámetro ErrorMessage donde se podría indicar el valor en el caso de que no se rellene la propiedad.&lt;br /&gt;
=&gt; &lt;a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.stringlengthattribute.aspx"&gt;StringLength&lt;/a&gt;: nos permite validar longitudes de una cadena, he indicar un mensaje de error si no se cumple.&lt;br /&gt;
=&gt; &lt;a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.regularexpressionattribute.aspx"&gt;RegularExpression&lt;/a&gt;: nos permite validar una cadena con una expresión regular dada. Para ver ejemplos de expresiones regulares podeis visitar este &lt;a href="http://www.regular-expressions.info/"&gt;enlace&lt;/a&gt;.&lt;br /&gt;
=&gt; &lt;a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.displaynameattribute.aspx"&gt;DisplayNameAttribute&lt;/a&gt;: nos permite darle un alias a una propiedad.&lt;br /&gt;
El ejemplo, consiste en la creación de ficheros XML a través de MVC.&lt;br /&gt;
&lt;br /&gt;
El código fuente del ejemplo lo teneis en este &lt;a href="http://cid-3f59c33a50c6d482.office.live.com/self.aspx/.Public/EjemploAtributos.rar"&gt;enlace&lt;/a&gt;.&lt;br /&gt;
Creo que es un ejemplo sencillo, pero si teneis alguna duda, por favor podeis preguntármela a través de los comentarios, por email, o a través de twitter(&lt;a href="http://twitter.com/Jtorrecilla"&gt;@Jtorrecilla&lt;/a&gt;).&lt;br /&gt;
&lt;br /&gt;
Saludos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-4225673838060113154?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/d0TSGCpYra_1V1B54OkmhuDP7p8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/d0TSGCpYra_1V1B54OkmhuDP7p8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/d0TSGCpYra_1V1B54OkmhuDP7p8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/d0TSGCpYra_1V1B54OkmhuDP7p8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/UkwQVrvT7lE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/4225673838060113154/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/09/que-son-los-atributos-y-su-uso-en-net.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/4225673838060113154?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/4225673838060113154?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/UkwQVrvT7lE/que-son-los-atributos-y-su-uso-en-net.html" title="Que son los Atributos y su uso en .NET" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/09/que-son-los-atributos-y-su-uso-en-net.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQHQXo-fCp7ImA9Wx5SGUg.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-507688051895911628</id><published>2010-08-16T13:15:00.000+02:00</published><updated>2010-08-16T13:15:30.454+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-16T13:15:30.454+02:00</app:edited><title>Regreso de las vacaciones</title><content type="html">Hola a todos, acabo de regresar de las vacaciones, donde he podido cargar un poco las pilas.&lt;br /&gt;
&lt;br /&gt;
Me gustaria que me dejarais comentarios acerca de los temas que os gustaria que vaya tratando en el blog.&lt;br /&gt;
&lt;br /&gt;
Un saludo a Todos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-507688051895911628?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BhKxtaOYmfC3eJRHW7JTLlJUudw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BhKxtaOYmfC3eJRHW7JTLlJUudw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BhKxtaOYmfC3eJRHW7JTLlJUudw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BhKxtaOYmfC3eJRHW7JTLlJUudw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/ZftuhNhMWmA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/507688051895911628/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/08/regreso-de-las-vacaciones.html#comment-form" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/507688051895911628?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/507688051895911628?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/ZftuhNhMWmA/regreso-de-las-vacaciones.html" title="Regreso de las vacaciones" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/08/regreso-de-las-vacaciones.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYBQnYyeSp7ImA9WxFbE0w.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-8423812972961170338</id><published>2010-07-05T09:49:00.000+02:00</published><updated>2010-07-05T09:49:13.891+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-05T09:49:13.891+02:00</app:edited><title>Entity Framework (3 de N): ObjectContext y ObjectSet</title><content type="html">Vamos a por el tercer post de EF, en él, voy a empezar a explicar un poco el código que nos genera VS.&lt;br /&gt;
En el momento en el que generamos un EDMX, y agregamos nuestras Tablas de Datos que pasan a ser entidades del módelo, VS genera el fichero XXX.Designer.VB.&lt;br /&gt;
Este fichero va a contener, toda la información relativa al contexto de manejo de los datos, las entidades, y las asociaciones existentes entre las distintas entidades.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Para comenzar vamos a ver el Contexto:&lt;br /&gt;
DEFINICION&lt;br /&gt;
ObjectContext es la clase encargada de manejar los datos de la BD como si fueran entidades definidas en el modelo.&lt;br /&gt;
VS va a generar una propiedad de solo lectura por cada una de las entidades existentes en nuestro módelo, devolviéndolas como un ObjectSet de la entidad deseada.&lt;br /&gt;
¿Qué es un ObjectSet?&lt;br /&gt;
Es la clase que nos permite manejar el conjunto de Entidades por un tipo dado.&lt;br /&gt;
Herada de la clase generica ObjectQuery, la cual genera una colección de resultados a través de una consulta. La consulta y la conexión van a venir indicados a través del ObjectContext.&lt;br /&gt;
Además también implementa las siguientes Interfaces:&lt;br /&gt;
- IObjectSet (Of Entity): genera las cabeceras de los métodos que nos permiten modificar el conjunto de datos de la entidad.&lt;br /&gt;
- IQueryAble (Of Entity): nos va a facilitar la funcionalidad para poder consultar los datos del objeto.&lt;br /&gt;
- IEnumerable (Of Entity): nos va a permitir generar un enumerador de los datos de la entidad.&lt;br /&gt;
- IQueryAble: nos va a facilitar la funcionalidad para poder consultar los datos del objeto.&lt;br /&gt;
- IEnumerable): nos va a permitir generar un enumerador de los datos de la entidad.&lt;br /&gt;
&lt;br /&gt;
Con lo indicado anteriormente, podemos decir, que un ObjectSet de una Entidad nos va a devolver todos los registros de una tabla, nos va a permitir agregar, modificar o borrar los datos de un registro, nos va a permitir hacer filtros, y listarlos.&lt;br /&gt;
&lt;br /&gt;
Además de los distintos ObjectSet de las Entidades, VS también va a generar un método para cada una de las entidades que se va a encargar de Agregar un nuevo objeto que enviaremos como parámetro a la Entidad indicada.&lt;br /&gt;
&lt;br /&gt;
En el próximo post, nos meteremos con las propias Entidades generadas por VS.&lt;br /&gt;
Saludos…&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-8423812972961170338?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2-0LofbebvK7fZR-lefgH9xOii0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2-0LofbebvK7fZR-lefgH9xOii0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2-0LofbebvK7fZR-lefgH9xOii0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2-0LofbebvK7fZR-lefgH9xOii0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/zKWERcxgGk8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/8423812972961170338/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/07/entity-framework-3-de-n-objectcontext-y.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/8423812972961170338?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/8423812972961170338?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/zKWERcxgGk8/entity-framework-3-de-n-objectcontext-y.html" title="Entity Framework (3 de N): ObjectContext y ObjectSet" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/07/entity-framework-3-de-n-objectcontext-y.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4GQHkyeCp7ImA9WxFbEEg.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-3475809176715989969</id><published>2010-07-02T09:15:00.000+02:00</published><updated>2010-07-02T09:15:21.790+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-02T09:15:21.790+02:00</app:edited><title>Entity Framework (2 de N)</title><content type="html">Aquí viene el segundo post de la serie de EF.&lt;br /&gt;
Si recordais el primer mensaje, puse una imagen con las tablas y con sus relaciones.  Está imagen está tomada desde VS con el origen de datos que definimos.&lt;br /&gt;
&lt;br /&gt;
Como podeis apreciar en la imagen, vemos 4 tablas que vienen de la Base de Datos y han sido convertidas en Entidades dentro de nuestro modelo.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Una vez dentro del esquema del fichero EDMX, si seleccionamos una entidad del modelo nos va a aparecer un listado de los mapeos de los campos con la Base de datos como se puede observar en la siguiente imagen:&lt;br /&gt;
&lt;br /&gt;
&lt;img src="http://img10.imageshack.us/img10/5143/efimagen3.jpg"/&gt;&lt;br /&gt;
&lt;br /&gt;
En primer lugar aparece la tabla de Mapeo con la que se relaciona nuestra entidad.&lt;br /&gt;
También vamos a ver cada una de las columnas definidas en la tabla relacionada en la Base de Datos y su asociación con las distintas propiedades de la Entidad.&lt;br /&gt;
Para cada una de estas propiedades de la Entidad, vamos a ver los atributos de los que dispone:&lt;br /&gt;
- EntityKey: nos indica si es clave de la entidad.&lt;br /&gt;
- Name.&lt;br /&gt;
- Nullable: si admite o no valores nulos.&lt;br /&gt;
- Type: tipo de dato.&lt;br /&gt;
- Max Length (Para cadenas): tamaño máximo.&lt;br /&gt;
- Precision y Scala para definir los valores decimales.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Por otro lado podemos observar en el esquema, las asociaciones existentes entre las distintas entidades, que representan las relaciones que hemos definido en la Base de datos.&lt;br /&gt;
Podemos editar los detalles de una asociación y nos vamos a encontrar con las siguientes características:&lt;br /&gt;
&lt;br /&gt;
&lt;img src="http://img571.imageshack.us/img571/9382/efimagen2.jpg"/&gt;&lt;br /&gt;
&lt;br /&gt;
- Nombre de la Asociación&lt;br /&gt;
- Propiedad de Navegación en el objeto de Origen:&lt;br /&gt;
o Cardinalidad en la tabla Origen&lt;br /&gt;
o Tabla de Destino&lt;br /&gt;
o Acción en Caso de Borrado en la tabla Origen&lt;br /&gt;
- Propiedad de Navegación en el objeto de Destino:&lt;br /&gt;
o Cardinalidad en la tabla de Destino&lt;br /&gt;
o Tabla de Origen&lt;br /&gt;
o Accion en caso de Borrado en la tabla Destino&lt;br /&gt;
- Relación Ajena.&lt;br /&gt;
Aunque nosotros en Base de Datos no hayamos activado el Borrado en Cascada, lo podemos definir a través de las propiedades.&lt;br /&gt;
En los próximos post ire indicando más detalles de esta utilísima tecnología.&lt;br /&gt;
Saludos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-3475809176715989969?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/79Z50ItL2hTUP0NY-2iGLZoEu60/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/79Z50ItL2hTUP0NY-2iGLZoEu60/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/79Z50ItL2hTUP0NY-2iGLZoEu60/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/79Z50ItL2hTUP0NY-2iGLZoEu60/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/0y1_jAQK7Xg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/3475809176715989969/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/07/entity-framework-2-de-n.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/3475809176715989969?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/3475809176715989969?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/0y1_jAQK7Xg/entity-framework-2-de-n.html" title="Entity Framework (2 de N)" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/07/entity-framework-2-de-n.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcHRng9fSp7ImA9WxFUGUU.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-2217740183766359014</id><published>2010-07-01T12:26:00.001+02:00</published><updated>2010-07-01T12:27:17.665+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-01T12:27:17.665+02:00</app:edited><title>Entity Framework (1 de N)</title><content type="html">Continuando con mi último post (sigo dando formación), ahora me encuentro explicando un poco Entity Framework, desde mi leve conocimiento del mismo voy a dar una pequeña explicación y guía para su uso.&lt;br /&gt;
Entity Framework (a partir de aquí EF) permite la interactuación entre código .NET y un modelo de datos relacional de manera bastante agil y sencilla.&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Lo que se pretende con EF, es el diseño a través de Entidades. Una entidad es el conjunto de propiedades que definen un dato tipo concreto y se distinguen a través de un campo clave.&lt;br /&gt;
Si tomamos el siguiente ejemplo:&lt;br /&gt;
&lt;img src='http://img190.imageshack.us/img190/5493/efimagen1.jpg'/&gt;&lt;br /&gt;
Clientes -&gt; Pedido -&gt; Detalles-Pedido&lt;-Productos&lt;br /&gt;
Como podemos observar, las 4 entidades que aparecen en la imagen, son 4 entidades (tablas de BD), aparecen sus propiedades (campos de la Base de Datos), y además de ello incluyen otro tipo de Propiedades llamadas de Navegación. Como ejemplo:&lt;br /&gt;
La entidad Pedido, tiene como propiedades un identificador, un identificador de cliente y una fecha, y además de ello, tiene una propiedad del tipo Entidad Cliente (el cliente propietario del pedido) y una Entidad de tipo Detalles Pedido (los detalles asociados a un pedido).&lt;br /&gt;
VS nos permite desde VS2008 SP1 y con la nueva versión VS2010, la generación, con unos simples clicks de Ratón, de un módelo que nos va a permitir trabajar con nuestra BD.&lt;br /&gt;
Dentro de un proyecto en VS, vamos a darle Agregar Nuevo Elemento, y vamos a Seleccionar “ADO.Net Entity Data Model”. Esto va a generar un fichero con Extension “edmx”.&lt;br /&gt;
Una vez realizado este paso, nos va a permitir indicar como vamos a generar el módelo:&lt;br /&gt;
- Desde una Base de Datos existente&lt;br /&gt;
- Desde un Modelo en Blanco&lt;br /&gt;
Si lo hacemos desde un modelo en blanco vamos a poder definir las entidades a nuestro gusto, y después enviarlas a BD (Lo veremos en otro post).&lt;br /&gt;
En el ejemplo que nos lleva vamos a seleccionar “Desde una Base de Datos Existente”, seleccionamos siguiente, y nos aparecerá el menú de selección de BD. &lt;br /&gt;
A continuación elegimos la BD deseada, pulsamos siguiente, y nos aparecerá un cuadro donde indicaremos que objetos de la BD vamos a incorporar a nuestro módelo, para marcar o desmarcar a nuestro gusto (Tablas, Vistas, Procedimientos…). Además de ello, nos va a permitir la posibilidad de indicar el nombre del NameSpace que va a albergar todo el código generado.&lt;br /&gt;
Una vez realizado esto,  dentro de nuestra solución de VS, vamos a encontrar el fichero EDMX generado, donde vamos a poder visualizar el esquema de Entidades de nuestra Base de Datos, con todas las Propiedades y Relaciones que hayamos definido a la hora de crear la Base de Datos.&lt;br /&gt;
En los próximos post ire indicando más detalles de esta utilísima tecnología.&lt;br /&gt;
Saludos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-2217740183766359014?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/I3OfYEAcXWNbhwA0aV33HMD-6OU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I3OfYEAcXWNbhwA0aV33HMD-6OU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/I3OfYEAcXWNbhwA0aV33HMD-6OU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I3OfYEAcXWNbhwA0aV33HMD-6OU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/L0etP5qDLp4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/2217740183766359014/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/07/entity-framework-1-de-n.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/2217740183766359014?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/2217740183766359014?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/L0etP5qDLp4/entity-framework-1-de-n.html" title="Entity Framework (1 de N)" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/07/entity-framework-1-de-n.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcBRnw7fCp7ImA9WxFUGEQ.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-2919148035941926174</id><published>2010-06-30T13:21:00.002+02:00</published><updated>2010-06-30T13:24:17.204+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-30T13:24:17.204+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VB" /><category scheme="http://www.blogger.com/atom/ns#" term="VS" /><title>Detectar Cambios en una Clase</title><content type="html">Hola, después de un tiempo donde no he podido escribir nada, os traigo este post acerca de la Interfaz "INotifyPropertyChanged".&lt;br /&gt;
&lt;br /&gt;
Ya que ando dando una formación de  VB2008, he estado dando un breve ejemplo de LINQTOSQL.&lt;br /&gt;
&lt;br /&gt;
Uno de mis alumnos me pregunto: ¿Cómo puedo determinar si los controles que tengo en un formulario han cambiado?&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
Y me explico su idea de como hacerlo a través del evento TextChanged de los controles y con una variable de tipo Boolean.&lt;br /&gt;
&lt;br /&gt;
Puesto que no soy ningun, experto en LINQTOSQL, estuve investigando un poco y vi que se podia determinar si existen cambios en el objeto de contexto &lt;br /&gt;
(igual que esto tambien puede hacerse en un datatable/dataset).&lt;br /&gt;
&lt;br /&gt;
Descubri que las clases generadas, por VS, para cada una de las entidades de la base de datos implementan las Interfaces INotifyPropertyChanged y &lt;br /&gt;
INotifyPropertyChanging.&lt;br /&gt;
&lt;br /&gt;
Ambas interfaces se encuentran definidas en el espacio de Nombres "System.ComponentModel".&lt;br /&gt;
&lt;br /&gt;
La Interfaz "INotifyPropertyChanged" se va a utilizar para indicar que hay cambios pendientes en una clase o entidad. Como bien  dice la MSDN,&lt;br /&gt;
es muy util cuando estamos trabajando con objetos enlazados, por ejemplo:&lt;br /&gt;
&lt;br /&gt;
Tenemos un DataGridView enlazado a nuestra tabla de empleados, y estamos en un formulario visualizando los datos de uno de esos empleados, cualquier &lt;br /&gt;
cambio que hagamos en el formulario, se va a reflejar de manera inmediata en nuestro DataGridView. (Ojo trabajando con un BindingSource como origen &lt;br /&gt;
de datos de las cajas de texto de nuestro formulario).&lt;br /&gt;
&lt;br /&gt;
La Interfaz "INotifyPropertyChanging" nos va a indicar que una propiedad está cambiando.&lt;br /&gt;
&lt;br /&gt;
Para que podamos trabajar con estas interfaces, vamos a hacer una pequeña clase de ejemplo:&lt;br /&gt;
&lt;/br&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Imports System.ComponentModel&lt;br /&gt;
&lt;br /&gt;
Public Class NotificacionCambios&lt;br /&gt;
&lt;br /&gt;
Implements INotifyPropertyChanged, INotifyPropertyChanging&lt;br /&gt;
&lt;br /&gt;
Public Event PropertyChanged(ByVal sender As Object, ByVal e As System.ComponentModel.PropertyChangedEventArgs) Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged&lt;br /&gt;
Public Event PropertyChanging(ByVal sender As Object, ByVal e As System.ComponentModel.PropertyChangingEventArgs) Implements System.ComponentModel.INotifyPropertyChanging.PropertyChanging&lt;br /&gt;
&lt;br /&gt;
Private _nombre As String&lt;br /&gt;
Public Property Nombre() As String&lt;br /&gt;
Get&lt;br /&gt;
Return _nombre&lt;br /&gt;
End Get&lt;br /&gt;
Set(ByVal value As String)&lt;br /&gt;
If _nombre = value Then Exit Property&lt;br /&gt;
RaiseEvent PropertyChanging(Me, New PropertyChangingEventArgs(String.Empty))&lt;br /&gt;
_nombre = value&lt;br /&gt;
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs("Nombre"))&lt;br /&gt;
End Set&lt;br /&gt;
End Property&lt;br /&gt;
End Class&lt;br /&gt;
&lt;br /&gt;
Espero que os sea de utilidad, y si teneis alguna duda, ya sabeis donde estoy.&lt;br /&gt;
&lt;br /&gt;
Fuente: &lt;br /&gt;
http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanging.aspx&lt;br /&gt;
http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-2919148035941926174?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fc5a21gFVrqg2h7Id_Y1vPhRTQs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fc5a21gFVrqg2h7Id_Y1vPhRTQs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fc5a21gFVrqg2h7Id_Y1vPhRTQs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fc5a21gFVrqg2h7Id_Y1vPhRTQs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/tqamL-w5Dc0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/2919148035941926174/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/06/detectar-cambios-en-una-clase.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/2919148035941926174?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/2919148035941926174?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/tqamL-w5Dc0/detectar-cambios-en-una-clase.html" title="Detectar Cambios en una Clase" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/06/detectar-cambios-en-una-clase.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8FSXczfip7ImA9WxFQF0k.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-3269393939566783562</id><published>2010-05-13T11:43:00.000+02:00</published><updated>2010-05-13T11:43:38.986+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-13T11:43:38.986+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VB" /><title>Obtención del Esquema de una Base de Datos</title><content type="html">En este post voy a tratar de explicar brevemente como obtener el Esquema de una Base de Datos a través de nuestra conexión.&lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;En primer lugar, necesitamos tener una variable de tipo Connection. Puede ser una SqlConnection, OleDbConnection u otra. En el ejemplo voy a usar una variable del tipo OleDbConnection.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;Private conexion As OleDb.OleDbConnection&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Por otro lado, vamos a crearnos 2 tablas para mantener las columnas.(Más Adelante voy a explicar su uso).&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
    Private dtColumnas As DataTable&lt;br /&gt;
    Private dtAux As DataTable&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Bueno ahora viene la parte importante:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Consultar las Tablas de la Base de Datos:&lt;/b&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
 Sub Obtener_Listado_Tablas_BD()&lt;br /&gt;
        Try&lt;br /&gt;
            If conexion Is Nothing Then conexion = New OleDb.OleDbConnection("ConnectionString")&lt;br /&gt;
            conexion.Open()&lt;br /&gt;
&lt;br /&gt;
            Me.ComboBox1.DataSource = conexion.GetSchema("Tables")&lt;br /&gt;
            Me.ComboBox1.DisplayMember = "TABLE_NAME"&lt;br /&gt;
            Me.ComboBox1.ValueMember = "TABLE_NAME"&lt;br /&gt;
&lt;br /&gt;
            dtColumnas = conexion.GetSchema("Columns")&lt;br /&gt;
            Obtener_Listado_Columnas(ComboBox1.SelectedValue)&lt;br /&gt;
        Catch ex As Exception&lt;br /&gt;
            Msgbox(ex.Message)&lt;br /&gt;
        End Try&lt;br /&gt;
    End Sub&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
El primer paso es definir la conexion y abrirla.&lt;br /&gt;
&lt;br /&gt;
A continuación llamamamos al método &lt;b&gt;GetSchema&lt;/b&gt; de nuestra variable "conexion" indicandole que datos queremos obtener, en nuestro caso &lt;b&gt;Tables&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Vamos a guardar dichos resultados en un ComboBox.&lt;br /&gt;
&lt;br /&gt;
Ahora, pasamos a obtener todas las columnas de las tablas de la BD y lo guardamos en dtColumnas.&lt;br /&gt;
&lt;br /&gt;
Y  por último, vamos a &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Obtener Listado de Columnas&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
  Sub Obtener_Listado_Columnas(ByVal strNombreTabla As String)&lt;br /&gt;
        dtAux = dtColumnas.Clone&lt;br /&gt;
        dtAux.Rows.Clear()&lt;br /&gt;
        dtColumnas.Select("TABLE_NAME='" &amp; strNombreTabla &amp; "'").ToList().ForEach(Sub(a) dtAux.ImportRow(a))&lt;br /&gt;
        Me.DataGridView1.DataSource = dtAux&lt;br /&gt;
    End Sub&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Dada una Tabla, indicada por &lt;b&gt;strNombreTabla&lt;/b&gt; vamos a filtrar la tabla de columnas llenada anteriormente.&lt;br /&gt;
&lt;br /&gt;
Con una función Lambda (se podría sustituir por un bucle for each tradicional) vamos a almacenar  en &lt;b&gt;dtAux&lt;/b&gt; los registros coincidentes con nuestro filtro, indicado por &lt;b&gt;.Select("TABLE_NAME='" &amp; strNombreTabla &amp; "'")&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Y por último, mostramos el contenido en un DataGridView.&lt;br /&gt;
&lt;br /&gt;
Os dejo el enlace al &lt;a href="http://cid-3f59c33a50c6d482.skydrive.live.com/self.aspx/.Public/Obtener%5E_Esquema%5E_BD.rar" target="blank"&gt;código&lt;/a&gt; en mi SkyDrive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-3269393939566783562?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/742fzrQucgIMPr8qpAELvSrtZ2Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/742fzrQucgIMPr8qpAELvSrtZ2Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/742fzrQucgIMPr8qpAELvSrtZ2Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/742fzrQucgIMPr8qpAELvSrtZ2Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/Bpov7aKfNLs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/3269393939566783562/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/05/obtencion-del-esquema-de-una-base-de.html#comment-form" title="8 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/3269393939566783562?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/3269393939566783562?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/Bpov7aKfNLs/obtencion-del-esquema-de-una-base-de.html" title="Obtención del Esquema de una Base de Datos" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>8</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/05/obtencion-del-esquema-de-una-base-de.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEDQ385fip7ImA9WxFSF00.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-1925805728866775032</id><published>2010-04-19T22:23:00.002+02:00</published><updated>2010-04-19T22:24:32.126+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-19T22:24:32.126+02:00</app:edited><title>A la presentación de VS2010 de Madrid</title><content type="html">Mañana voy al evento de presentación de VS2010 en Madrid, ire poniendo algunos comentarios a través de Twitter en &lt;a href="http://twitter.com/jtorrecilla"&gt;@jtorrecilla&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Saludos!&lt;span class=”fullpost”&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-1925805728866775032?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2omF9Jmwcnhssm6prvDzVhTxcDg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2omF9Jmwcnhssm6prvDzVhTxcDg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2omF9Jmwcnhssm6prvDzVhTxcDg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2omF9Jmwcnhssm6prvDzVhTxcDg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/5FG167NZgDg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/1925805728866775032/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/04/la-presentacion-de-vs2010-de-madrid.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/1925805728866775032?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/1925805728866775032?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/5FG167NZgDg/la-presentacion-de-vs2010-de-madrid.html" title="A la presentación de VS2010 de Madrid" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/04/la-presentacion-de-vs2010-de-madrid.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4ARn48eSp7ImA9WxFSEUg.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-875361751939464606</id><published>2010-04-13T12:02:00.000+02:00</published><updated>2010-04-13T12:02:27.071+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-13T12:02:27.071+02:00</app:edited><title>Pequeño Tip de VS2010</title><content type="html">Hola aqui os pongo un pequeño TIP de VS2010.&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Para aquellos que no lo sepan, existe la seleccion vertical de código (en columna), con el atajo de teclado " Shift + Alt + flecha".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Bueno, lo interesante del TIP (en imagenes)&lt;/div&gt;Dado el código:&lt;br /&gt;
&lt;img src="http://blogs.msdn.com/blogfiles/zainnab/WindowsLiveWriter/TheBestofVisualStudio2010Pastingasingles_BC67/clip_image002_9dc14800-de93-4041-8919-461b21b94050.png"/&gt;&lt;br /&gt;
Seleccionamos el valor origen y lo copiamos(Ctrl + C)&lt;br /&gt;
&lt;img src="http://blogs.msdn.com/blogfiles/zainnab/WindowsLiveWriter/TheBestofVisualStudio2010Pastingasingles_BC67/clip_image004_1bec3e0c-721b-41ee-943b-a7fedfefa620.png"/&gt;&lt;br /&gt;
Seleccionamos con el TIP las lineas.&lt;br /&gt;
&lt;img src="http://blogs.msdn.com/blogfiles/zainnab/WindowsLiveWriter/TheBestofVisualStudio2010Pastingasingles_BC67/clip_image006_edbf4e12-41ac-4202-a235-e7db858327c7.png"/&gt;&lt;br /&gt;
Pegamos lo obtenido al principio (Ctrl + V)&lt;br /&gt;
&lt;img src="http://blogs.msdn.com/blogfiles/zainnab/WindowsLiveWriter/TheBestofVisualStudio2010Pastingasingles_BC67/clip_image008_503630a8-9655-4636-b58f-cf0e1d5adcc0.png"/&gt;&lt;br /&gt;
&lt;br /&gt;
Este tip es válido tanto en  C# como en VB. Tiene ventaja C# por la sintaxis!&lt;br /&gt;
&lt;br /&gt;
El articulo original lo podeis encontrar &lt;a href="http://blogs.msdn.com/zainnab/archive/2010/04/13/the-best-of-visual-studio-2010-pasting-a-single-selection-into-a-box-selection.aspx"&gt;aquí&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Un saludo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-875361751939464606?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ZvZ_6ZKlpH00-h6MwANtzWEo6ps/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZvZ_6ZKlpH00-h6MwANtzWEo6ps/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ZvZ_6ZKlpH00-h6MwANtzWEo6ps/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ZvZ_6ZKlpH00-h6MwANtzWEo6ps/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/yExPoldTinI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/875361751939464606/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/04/pequeno-tip-de-vs2010.html#comment-form" title="5 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/875361751939464606?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/875361751939464606?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/yExPoldTinI/pequeno-tip-de-vs2010.html" title="Pequeño Tip de VS2010" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>5</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/04/pequeno-tip-de-vs2010.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQDQHw_eCp7ImA9WxFSEEQ.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-4338832741925831699</id><published>2010-04-12T19:46:00.000+02:00</published><updated>2010-04-12T19:46:11.240+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-12T19:46:11.240+02:00</app:edited><title>Versiones Express de VS2010 disponibles</title><content type="html">Al igual que ya está disponible la RTM, han llegado las versiones express.&lt;span class="”fullpost”"&gt; &lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;a href="http://www.microsoft.com/express/"&gt;http://www.microsoft.com/express/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-4338832741925831699?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tRr8GtzwSwV3mIegn2vBkji_dBc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tRr8GtzwSwV3mIegn2vBkji_dBc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tRr8GtzwSwV3mIegn2vBkji_dBc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tRr8GtzwSwV3mIegn2vBkji_dBc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/T1ll9Nj1On4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/4338832741925831699/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/04/versiones-express-de-vs2010-disponibles.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/4338832741925831699?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/4338832741925831699?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/T1ll9Nj1On4/versiones-express-de-vs2010-disponibles.html" title="Versiones Express de VS2010 disponibles" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/04/versiones-express-de-vs2010-disponibles.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUENSXszcCp7ImA9WxBaGUg.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-7991237910587334620</id><published>2010-03-30T16:01:00.000+02:00</published><updated>2010-03-30T16:01:38.588+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-30T16:01:38.588+02:00</app:edited><title>Training Kit Windos Phone 7</title><content type="html">Hola,&lt;br /&gt;
&lt;br /&gt;
Os dejo un enlace al &lt;a href="http://blogs.msdn.com/bajoo/archive/2010/03/30/free-windows-phone-7-training-kit-available-now.aspx"&gt;Training Kit de Windows Phone 7&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Para los que no lo sepan, esta disponible para VS2010 RC, unicamente se podrá pogramar en C# (de momento), y las aplicaciones van a estar basadas en SilverLigth.&lt;br /&gt;
&lt;br /&gt;
Saludos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-7991237910587334620?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9xF47omnjFjcu8Pqa0d8pjW72Nk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9xF47omnjFjcu8Pqa0d8pjW72Nk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9xF47omnjFjcu8Pqa0d8pjW72Nk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9xF47omnjFjcu8Pqa0d8pjW72Nk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/z4qi469sCLE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/7991237910587334620/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/03/training-kit-windos-phone-7.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/7991237910587334620?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/7991237910587334620?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/z4qi469sCLE/training-kit-windos-phone-7.html" title="Training Kit Windos Phone 7" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/03/training-kit-windos-phone-7.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YCR307eCp7ImA9WxBaGU4.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-3643123698428323931</id><published>2010-03-30T10:52:00.002+02:00</published><updated>2010-03-30T10:52:46.300+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-30T10:52:46.300+02:00</app:edited><title>Videos interesantes acerca de SilverLight</title><content type="html">Aqui os dejo un enlace a un blog en el que muestran algunos videos interesantes sobre SilverLight.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://blogs.msdn.com/jblizzard/archive/2010/03/29/getting-started-videos-for-silverlight-and-expression.aspx"&gt;Videos&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
PD: Espero que me dejen aplicarlo en un modulo de mi proyecto.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-3643123698428323931?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/X7Nu26xrF8g9GGZA7ggqviieJqQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/X7Nu26xrF8g9GGZA7ggqviieJqQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/X7Nu26xrF8g9GGZA7ggqviieJqQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/X7Nu26xrF8g9GGZA7ggqviieJqQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/qoxZzys_Obg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/3643123698428323931/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/03/videos-interesantes-acerca-de.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/3643123698428323931?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/3643123698428323931?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/qoxZzys_Obg/videos-interesantes-acerca-de.html" title="Videos interesantes acerca de SilverLight" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/03/videos-interesantes-acerca-de.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIGQ3c-eCp7ImA9WxBaFk4.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-1056911203155730367</id><published>2010-03-26T22:22:00.000+01:00</published><updated>2010-03-26T22:22:02.950+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-26T22:22:02.950+01:00</app:edited><title>MAP (Microsoft Active Professional)</title><content type="html">Hace unos días, me llego un email que decía lo siguiente:&lt;br /&gt;
&lt;br /&gt;
"El equipo de Microsoft España quiere reconocer tu esfuerzo constante por participar activamente en nuestros programas de formación y por estar pendiente durante el ultimo año de nuestra tecnología.&lt;br /&gt;
Valoramos tu compromiso, que hace que te encuentres entre el 5% mas actualizado de una de las comunidades técnicas mas importantes a nivel mundial. Por ello queremos...."&lt;br /&gt;
&lt;br /&gt;
Saludos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-1056911203155730367?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QJZyThixLrHieMQKtu69h7tKfJw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QJZyThixLrHieMQKtu69h7tKfJw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QJZyThixLrHieMQKtu69h7tKfJw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QJZyThixLrHieMQKtu69h7tKfJw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/TLdv_f6jlxg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/1056911203155730367/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/03/map-microsoft-active-professional.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/1056911203155730367?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/1056911203155730367?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/TLdv_f6jlxg/map-microsoft-active-professional.html" title="MAP (Microsoft Active Professional)" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/03/map-microsoft-active-professional.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ICQHczeCp7ImA9WxBaFEg.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-2935607912324841610</id><published>2010-03-24T20:39:00.000+01:00</published><updated>2010-03-24T20:39:21.980+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-24T20:39:21.980+01:00</app:edited><title>Añadir Eventos a Control creado en Runtime</title><content type="html">No voy a entrar muy en detalle, pero he visto ultimamente varios mensajes por el foro de como controlar determinado evento den un control creado en tiempo de ejecucion, y como saber en que control estamos.&lt;br /&gt;
&lt;br /&gt;
Voy a poner un pequeño ejemplo de como asignarle un manejador de eventos (handler) a un control y como utilizarlo.&lt;br /&gt;
&lt;br /&gt;
EN VB&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
'Esto se agregará donde se cree el control&lt;br /&gt;
Dim cmdBotonEjemplo as New Button()&lt;br /&gt;
cmbBotonEjemplo.Name="BotonN"&lt;br /&gt;
cmbBotonEjemplo.Text="Boton de Ejemplo"&lt;br /&gt;
Addhandler cmdBotonEjemplo.Click, AddressOf NombreEventoClick&lt;br /&gt;
me.Controls.Add(cmdBotonEjemplo)&lt;br /&gt;
'Esto se escribirá en la clase.&lt;br /&gt;
Private Sub NombreEventoClick(ByVal sender As System.Object, ByVal e As System.EventArgs)&lt;br /&gt;
&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
EN C#&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
//Esto se agregará donde se cree el control&lt;br /&gt;
Button cmdBotonEjemplo = new Button();&lt;br /&gt;
cmdBotonEjemplo.Name="BotonN";&lt;br /&gt;
cmbBotonEjemplo.Text="Boton de Ejemplo";&lt;br /&gt;
cmdBotonEjemplo.Click += new System.EventHandler(NombreEventoClick);&lt;br /&gt;
this.Controls.Add(cmdBotonEjemplo);&lt;br /&gt;
&lt;br /&gt;
//Esto se escribirá en la clase.&lt;br /&gt;
private void NombreEventoClick(object sender, EventArgs e)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Con esto ya tendremos creado nuestro manejador de eventos para el botón creado en runtime.&lt;br /&gt;
&lt;br /&gt;
Esto se puede realizar con cualquier control y cualquier evento, lo único que tendremos que tener en cuenta es la firma de los eventos a la hora de crearlos.&lt;br /&gt;
&lt;br /&gt;
Saludos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-2935607912324841610?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XB-sS6Beq4hTkX6q05UWpHOCjgI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XB-sS6Beq4hTkX6q05UWpHOCjgI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XB-sS6Beq4hTkX6q05UWpHOCjgI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XB-sS6Beq4hTkX6q05UWpHOCjgI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/n_H1SNdflsk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/2935607912324841610/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/03/anadir-eventos-control-creado-en.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/2935607912324841610?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/2935607912324841610?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/n_H1SNdflsk/anadir-eventos-control-creado-en.html" title="Añadir Eventos a Control creado en Runtime" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/03/anadir-eventos-control-creado-en.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4NSXc_fip7ImA9WxBbGUw.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-5062403901174201315</id><published>2010-03-18T14:13:00.001+01:00</published><updated>2010-03-18T14:13:18.946+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-18T14:13:18.946+01:00</app:edited><title>Examenes Beta de Certificacion VS 2010</title><content type="html">Hola revisando los foros msdn de USA, me he topado con este enlace: &lt;br /&gt;
&lt;a href="http://blogs.technet.com/betaexams/default.aspx" mce_href="http://blogs.technet.com/betaexams/default.aspx"&gt;http://blogs.technet.com/betaexams/default.aspx&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
En el que hablan de la disponibilidad de hacer un examen de  certificacion Beta sobre VS 2010 sobre diversas tecnologias.&lt;br /&gt;
&lt;br /&gt;
El coste del examen es gratuito ya que aportan un codigo promocional de  descuento.&lt;br /&gt;
&lt;br /&gt;
Espero que os interese.&lt;br /&gt;
&lt;br /&gt;
Un saludo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-5062403901174201315?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PJjQgi7RYPGsB0ZaND45IjdRMV8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PJjQgi7RYPGsB0ZaND45IjdRMV8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PJjQgi7RYPGsB0ZaND45IjdRMV8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PJjQgi7RYPGsB0ZaND45IjdRMV8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/CANpwOgqI2k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/5062403901174201315/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/03/examenes-beta-de-certificacion-vs-2010.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/5062403901174201315?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/5062403901174201315?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/CANpwOgqI2k/examenes-beta-de-certificacion-vs-2010.html" title="Examenes Beta de Certificacion VS 2010" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/03/examenes-beta-de-certificacion-vs-2010.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUBR3w9cCp7ImA9WxBXFk8.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-8536395603792208834</id><published>2010-01-25T21:55:00.002+01:00</published><updated>2010-01-27T21:30:56.268+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-27T21:30:56.268+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VB" /><category scheme="http://www.blogger.com/atom/ns#" term="c#" /><title>Formatear con separadores de miles una cadena</title><content type="html">&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Hola, ultimamente, he visto esta pregunta tanto en foros de EEUU como de HispanoAmerica, por ello me decido a colgar este pequeño ejemplo en C#, tambien lo disponible en VB por si alguien lo necesita:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;Para que funcione correctamente ha de invocarse a la funcion desde el evento KeyUP&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;code&gt;CODIGO C#&lt;/code&gt;&lt;/span&gt;&lt;code&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;public string Puntos(string strValor, int intNumDecimales)&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;{&lt;/span&gt;&lt;/span&gt;

&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;string strAux = null;&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;string strComas = null;&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;string strPuntos = null;&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int intX = 0;&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;bool bolMenos = false;&lt;/span&gt;&lt;/span&gt;

&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;strComas = "";&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (strValor.Length == 0) return "";&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;strValor = strValor.Replace(Application.CurrentCulture.NumberFormat.NumberGroupSeparator, "");&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (strValor.Contains(Application.CurrentCulture.NumberFormat.NumberDecimalSeparator)) {&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strAux = strValor.Substring(0, strValor.LastIndexOf(Application.CurrentCulture.NumberFormat.NumberDecimalSeparator));&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strComas = strValor.Substring(strValor.LastIndexOf(Application.CurrentCulture.NumberFormat.NumberDecimalSeparator) + 1);&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;else {&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strAux = strValor;&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/span&gt;

&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (strAux.Substring(0, 1) == Application.CurrentCulture.NumberFormat.NegativeSign) {&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bolMenos = true;&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strAux = strAux.Substring(1);&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/span&gt;

&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;strPuntos = strAux;&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;strAux = "";&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;while (strPuntos.Length &amp;gt; 3) {&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strAux = Application.CurrentCulture.NumberFormat.NumberGroupSeparator + strPuntos.Substring(strPuntos.Length - 3, 3) + strAux;&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strPuntos = strPuntos.Substring(0, strPuntos.Length - 3);&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (intNumDecimales &amp;gt; 0) {&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (strValor.Contains(Application.CurrentCulture.NumberFormat.PercentDecimalSeparator)) {&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strComas = Application.CurrentCulture.NumberFormat.PercentDecimalSeparator + strValor.Substring(strValor.LastIndexOf(Application.CurrentCulture.NumberFormat.PercentDecimalSeparator) + 1);&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (strComas.Length &amp;gt; intNumDecimales) {&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strComas = strComas.Substring(0, intNumDecimales + 1);&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;strAux = strPuntos + strAux + strComas;&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;

&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;return strAux;&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private void textBox1_KeyUp(object sender, KeyEventArgs e)&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;textBox1.Text = Puntos(textBox1.Text, 0);&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;textBox1.Select(textBox1.TextLength, 0);&lt;/span&gt;&lt;/span&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/span&gt;
&lt;/code&gt;&lt;code&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;CODIGO VB:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Public Function Puntos(ByVal strValor As String, ByVal intNumDecimales As Integer) As String&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Dim strAux As String = ""&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Dim strComas As String = ""&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Dim strPuntos As String = ""&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Dim intX As Integer = 0&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Dim bolMenos As Boolean = False&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;If strValor.Length = 0 Then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Return ""&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;End If&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strValor = strValor.Replace(Application.CurrentCulture.NumberFormat.NumberGroupSeparator, "")&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;If strValor.Contains(Application.CurrentCulture.NumberFormat.NumberDecimalSeparator) Then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strAux = strValor.Substring(0, strValor.LastIndexOf(Application.CurrentCulture.NumberFormat.NumberDecimalSeparator))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strComas = strValor.Substring(strValor.LastIndexOf(Application.CurrentCulture.NumberFormat.NumberDecimalSeparator) + 1)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Else&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strAux = strValor&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;End If&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;If strAux.Substring(0, 1) = Application.CurrentCulture.NumberFormat.NegativeSign Then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bolMenos = True&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strAux = strAux.Substring(1)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;End If&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strPuntos = strAux&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strAux = ""&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;While strPuntos.Length &amp;gt; 3&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strAux = Application.CurrentCulture.NumberFormat.NumberGroupSeparator + strPuntos.Substring(strPuntos.Length - 3, 3) + strAux&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strPuntos = strPuntos.Substring(0, strPuntos.Length - 3)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;End While&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;If intNumDecimales &amp;gt; 0 Then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;If strValor.Contains(Application.CurrentCulture.NumberFormat.PercentDecimalSeparator) Then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strComas = Application.CurrentCulture.NumberFormat.PercentDecimalSeparator + strValor.Substring(strValor.LastIndexOf(Application.CurrentCulture.NumberFormat.PercentDecimalSeparator) + 1)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;If strComas.Length &amp;gt; intNumDecimales Then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strComas = strComas.Substring(0, intNumDecimales + 1)&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;End If&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;End If&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;End If&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;strAux = strPuntos + strAux + strComas&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Return strAux&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;End Function&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;Private Sub TextBox1_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TextBox1.Text = Puntos(TextBox1.Text, 2)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;TextBox1.Select(TextBox1.TextLength, 0)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;End Sub&lt;br /&gt;
&lt;br /&gt;
Para evitar, que metan en la caja de texto mas de un caracter decimal:&lt;br /&gt;
&lt;br /&gt;
c#&lt;br /&gt;
&lt;br /&gt;
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (textBox1.Text.Contains(Application.CurrentCulture.NumberFormat.NumberDecimalSeparator) &amp;amp;&amp;amp; (e.KeyChar == Application.CurrentCulture.NumberFormat.NumberDecimalSeparator))&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e.Handled = true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e.Handled = false;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
VB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;If TextBox1.Text.Contains(Application.CurrentCulture.NumberFormat.PercentDecimalSeparator) And (e.KeyChar = Application.CurrentCulture.NumberFormat.PercentDecimalSeparator) Then&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e.Handled = True&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Else&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e.Handled = False&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;End If&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;End Sub&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: Verdana, sans-serif;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-8536395603792208834?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nH9fNznF0YHag3ESrXwqLeRPq3A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nH9fNznF0YHag3ESrXwqLeRPq3A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nH9fNznF0YHag3ESrXwqLeRPq3A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nH9fNznF0YHag3ESrXwqLeRPq3A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/fLG8oIVEBDU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/8536395603792208834/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/01/formatear-con-separadores-de-miles-una.html#comment-form" title="5 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/8536395603792208834?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/8536395603792208834?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/fLG8oIVEBDU/formatear-con-separadores-de-miles-una.html" title="Formatear con separadores de miles una cadena" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>5</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/01/formatear-con-separadores-de-miles-una.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUDRHo5cSp7ImA9WxBQFks.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-1393561285515773926</id><published>2010-01-16T19:41:00.000+01:00</published><updated>2010-01-16T19:41:15.429+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-16T19:41:15.429+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VB" /><title>Pequeños truquillos(1)</title><content type="html">&lt;div class="MsoNormal"&gt;Os dejo una lista de truquillos de código que más de una vez nos salvan de apuros:&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;CONOCER LA RUTA DIRECTORIO ESPECIAL:&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;Para conocer la ruta de un directorio especial dentro del equipo (Mis documentos, Mis Imágenes)….&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;La enumeración SpecialFolder del Namespace nos indica algunos directorios especiales y con la función GetFolderPath obtenemos la ruta completa&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;CONOCER EL DIRECTORIO EN EL QUE ESTAMOS TRABAJANDO:&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Environment.CurrentDirectory &lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;CONOCER LA RUTA DEL FICHERO EXE DE NUESTRA APLICACIÓN&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Application.StartUpPath&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;OBTENER UN LISTADO DE LAS UNIDADES DE NUESTRO EQUIPO (1):&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;For Each Str As String In Environment.GetLogicalDrives()&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;MsgBox(Str)&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Next&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;OBTENER UN LISTADO DE LAS UNIDADES DE NUESTRO EQUIPO (2):&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Versión con expresión Lambda y lista…&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Environment.GetLogicalDrives().ToList.ForEach(Function(str) Msgbox(str))&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;OBTENER UN LISTADO DE LOS PARAMETROS RECIBIDOS EN LA LINEA DE COMANDOS:&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;Environment.GetCommandLineArgs()&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;DETERMINAR SI UN FICHERO EXISTE&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;My.Computer.FileSystem.FileExists("RUTAFICHERO.EXTENSION")&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;OBTENER EL LISTADO DE FICHEROS DE UN DIRECTORIO:&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;My.Computer.FileSystem.GetFiles("DIRECTORIO")&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;DETERMINAR LA INFORMACIÓN DE UN FICHERO:&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;My.Computer.FileSystem.GetFileInfo("FICHERO")&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;DETERMINAR LA INFORMACION DE UN DIRECTORIO:&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;My.Computer.FileSystem.GetDirectoryInfo("DIRECTORIO")&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;Continuará…&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-1393561285515773926?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uvo6SAs-5NkGf1hbutMYPRSV1IE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uvo6SAs-5NkGf1hbutMYPRSV1IE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uvo6SAs-5NkGf1hbutMYPRSV1IE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uvo6SAs-5NkGf1hbutMYPRSV1IE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/2F8TYobgSUc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/1393561285515773926/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/01/pequenos-truquillos1.html#comment-form" title="15 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/1393561285515773926?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/1393561285515773926?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/2F8TYobgSUc/pequenos-truquillos1.html" title="Pequeños truquillos(1)" /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>15</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/01/pequenos-truquillos1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYAQ3c8fSp7ImA9WxBQEUw.&quot;"><id>tag:blogger.com,1999:blog-1257356821475475184.post-7712669533597831266</id><published>2010-01-10T09:29:00.000+01:00</published><updated>2010-01-10T09:29:02.975+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-10T09:29:02.975+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Controles" /><category scheme="http://www.blogger.com/atom/ns#" term="VB" /><title>Rellenar un listview con un DataTable y usar filtros.</title><content type="html">&lt;div class="MsoNormal"&gt;Muchas veces se pregunta en los foros formas alternativas al datagridview de visualizar los datos en una aplicación WinForms.&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;Para ello, he hecho un pequeño proyecto y voy a ir detallanado su funcionamiento:&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;1ª Parte: Definición del Listview&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;Para que el Listview tenga un aspecto más adecuado a nuestras pretensiones vamos a cambiar 2 de sus propiedades:&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;"&gt;-&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;View: Es la forma de represantar los datos. Vamos a establecer que sea del tipo “Details”.&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;"&gt;-&lt;span style="font: normal normal normal 7pt/normal 'Times New Roman';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;GridLines: Cuando se encuentra en el modo “Details” se pueden ver o no las líneas. Vamos a establecer el valor a “True”&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;2ª Parte: Obtener los datos&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;Como en todos los controles de representación de datos necesitamos los datos que vamos a visualizar. Para ello, he creado una pequeña base de datos Access con una tabla Movies, con los siguientes campos:&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;1 ID&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;2 Titulo&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;3 Director&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;4 Descripcion&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;Podeis usar vuestras propias clases para obtener los datos, yo lo he hecho con un DataAdapter llenando una tabla.&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;Function&lt;/span&gt; BuscarDatos(&lt;span style="color: blue;"&gt;ByRef&lt;/span&gt; dt &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DataTable&lt;/span&gt;, &lt;span style="color: blue;"&gt;Optional&lt;/span&gt; &lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; filtro &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;String&lt;/span&gt; = &lt;span style="color: #a31515;"&gt;""&lt;/span&gt;) &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;Boolean&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; bolResultado &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;Boolean&lt;/span&gt; = &lt;span style="color: blue;"&gt;True&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; cmd &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;OleDbCommand&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Try&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;If&lt;/span&gt; dt &lt;span style="color: blue;"&gt;Is&lt;/span&gt; &lt;span style="color: blue;"&gt;Nothing&lt;/span&gt; &lt;span style="color: blue;"&gt;Then&lt;/span&gt; dt = &lt;span style="color: blue;"&gt;New&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DataTable&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Using&lt;/span&gt; con &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;New&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;OleDbConnection&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\movies.accdb;Persist Security Info=False;"&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd = &lt;span style="color: blue;"&gt;New&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;OleDbCommand&lt;/span&gt;(&lt;span style="color: #a31515;"&gt;"SELECT ID,TITULO,DIRECTOR,DESCRIPCION FROM MOVIES WHERE TITULO LIKE @FILTRO OR "&lt;/span&gt; &amp;amp; _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #a31515;"&gt;" DIRECTOR LIKE @FILTRO OR DESCRIPCION LIKE @FILTRO"&lt;/span&gt;, con)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Parameters.AddWithValue(&lt;span style="color: #a31515;"&gt;"@FILTRO"&lt;/span&gt;, &lt;span style="color: #a31515;"&gt;"%"&lt;/span&gt; &amp;amp; filtro &amp;amp; &lt;span style="color: #a31515;"&gt;"%"&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Using&lt;/span&gt; DA &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;New&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;OleDbDataAdapter&lt;/span&gt;(cmd)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DA.Fill(dt)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Using&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Using&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Catch&lt;/span&gt; ex &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Exception&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bolResultado = &lt;span style="color: blue;"&gt;False&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Try&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;Return&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; bolResultado&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;La función recibe como parámetros:&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;Un datatable para guardar los datos. Lo recibe por referencia.&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;Y de forma opcional un filtro.&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;La función si se ejecuta correctamente nos va a devolver “True”, en otro caso nos devolverá false.&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;3ª Rellenar El Listview&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;Una vez que tenemos nuestro Datatable relleno, es hora de mostrar los datos en el ListView, para ello, haremos uso de la siguiente función:&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;Function&lt;/span&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt; RellenarListview(&lt;span style="color: blue;"&gt;ByVal&lt;/span&gt; dt &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DataTable&lt;/span&gt;) &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;Boolean&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; bolResultado &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;Boolean&lt;/span&gt; = &lt;span style="color: blue;"&gt;True&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim&lt;/span&gt; lstElemento &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ListViewItem&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Try&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Me&lt;/span&gt;.lvwDatos.Items.Clear()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Me&lt;/span&gt;.lvwDatos.Columns.Clear()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;For&lt;/span&gt; &lt;span style="color: blue;"&gt;Each&lt;/span&gt; col &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DataColumn&lt;/span&gt; &lt;span style="color: blue;"&gt;In&lt;/span&gt; dt.Columns&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lvwDatos.Columns.Add(col.ColumnName, col.ColumnName)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Next&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;For&lt;/span&gt; &lt;span style="color: blue;"&gt;Each&lt;/span&gt; row &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;DataRow&lt;/span&gt; &lt;span style="color: blue;"&gt;In&lt;/span&gt; dt.Rows&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstElemento = &lt;span style="color: blue;"&gt;New&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ListViewItem&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstElemento.Text = row(&lt;span style="color: brown;"&gt;0&lt;/span&gt;).ToString()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;For&lt;/span&gt; intcontador &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: blue;"&gt;Integer&lt;/span&gt; = &lt;span style="color: brown;"&gt;1&lt;/span&gt; &lt;span style="color: blue;"&gt;To&lt;/span&gt; dt.Columns.Count - &lt;span style="color: brown;"&gt;1&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lstElemento.SubItems.Add(row(intcontador).ToString())&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Next&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lvwDatos.Items.Add(lstElemento)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Next&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span style="color: blue;"&gt;Me&lt;/span&gt;.lvwDatos.AutoResizeColumns(&lt;span style="color: #2b91af;"&gt;ColumnHeaderAutoResizeStyle&lt;/span&gt;.HeaderSize)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Catch&lt;/span&gt; ex &lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Exception&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bolResultado = &lt;span style="color: blue;"&gt;False&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Try&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span lang="EN-US" style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue; font-family: Consolas; font-size: 9.5pt;"&gt;Return&lt;/span&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt; bolResultado&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"&gt;&lt;span style="font-family: Consolas; font-size: 9.5pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;End&lt;/span&gt; &lt;span style="color: blue;"&gt;Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;4ª Filtrar los datos.&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;En el ejemplo, al ser una base de datos realmente pequeña, el filtrado de datos lo hago directamente con respecto de la base de datos, pero no es la única forma de hacerlo, también lo podemos hacer a través de filtros en el propio datatable a través de la función “Select”.&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;En este ejemplo, he creado el botón “Filtrar” y el checkBox “Filtrado Automatico”. Ambas funcionalidades hacen que se filtre el contenido del listview, pero en distintos lugares.&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;El botón Filtrar, evidentemente, provoca el filtrado en el evento Click del botón, sin embargo cuando tenemos marcado el checkBox de “Filtrado automatico”, se filtran los datos según vayamos escribiendo en la caja de texto.&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;Espero que os haya gustado el articulo.&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;PD: El ejemplo está hecho en VB 2010 Beta 2, pero es completamente aplicable a vb2008 y vb2005. &lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;PD2: Si necesitais el ejemplo en c# no dudéis en pedírmelo.&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://cid-3f59c33a50c6d482.skydrive.live.com/self.aspx/.Public/ListViewEjemplo1.rar"&gt;Aquí podeis descargar el código fuente&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1257356821475475184-7712669533597831266?l=netjtorrecilla.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3gSrK24DqDtWUKrU6HDrS4Fx39g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3gSrK24DqDtWUKrU6HDrS4Fx39g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3gSrK24DqDtWUKrU6HDrS4Fx39g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3gSrK24DqDtWUKrU6HDrS4Fx39g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Jtorrecilla/~4/2xcdgYfHzMI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://netjtorrecilla.blogspot.com/feeds/7712669533597831266/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://netjtorrecilla.blogspot.com/2010/01/rellenar-un-listview-con-un-datatable-y.html#comment-form" title="20 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/7712669533597831266?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/1257356821475475184/posts/default/7712669533597831266?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Jtorrecilla/~3/2xcdgYfHzMI/rellenar-un-listview-con-un-datatable-y.html" title="Rellenar un listview con un DataTable y usar filtros." /><author><name>Javier Torrecilla</name><uri>http://www.blogger.com/profile/17019624318849340051</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>20</thr:total><feedburner:origLink>http://netjtorrecilla.blogspot.com/2010/01/rellenar-un-listview-con-un-datatable-y.html</feedburner:origLink></entry></feed>

