<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5637525353194937892</id><updated>2011-12-26T16:08:11.416-03:00</updated><category term='asp.net'/><category term='reflection'/><category term='Zapada'/><category term='ASP.NET AJAX EVENTOS html'/><category term='face.com'/><category term='web services'/><category term='vb.net'/><title type='text'>ArteLaLetra</title><subtitle type='html'>Me encanta el asado de oso panda</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://federicosantamarina.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5637525353194937892/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://federicosantamarina.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Federico Santamarina</name><uri>https://profiles.google.com/113274973637017992804</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-B3wdsBmsOXs/AAAAAAAAAAI/AAAAAAAAAFk/EZukzaHH2wg/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5637525353194937892.post-988397175814973644</id><published>2011-12-25T18:56:00.001-03:00</published><updated>2011-12-26T16:08:11.425-03:00</updated><title type='text'></title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&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/5637525353194937892-988397175814973644?l=federicosantamarina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://federicosantamarina.blogspot.com/feeds/988397175814973644/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://federicosantamarina.blogspot.com/2011/12/alguna-vez-me-crei-muy-inteligente-y.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5637525353194937892/posts/default/988397175814973644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5637525353194937892/posts/default/988397175814973644'/><link rel='alternate' type='text/html' href='http://federicosantamarina.blogspot.com/2011/12/alguna-vez-me-crei-muy-inteligente-y.html' title=''/><author><name>Federico Santamarina</name><uri>https://profiles.google.com/113274973637017992804</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-B3wdsBmsOXs/AAAAAAAAAAI/AAAAAAAAAFk/EZukzaHH2wg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5637525353194937892.post-8327271276536675877</id><published>2011-08-05T23:31:00.002-03:00</published><updated>2011-08-05T23:31:48.085-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Zapada'/><title type='text'>Zapada</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;iframe width="425" height="349" src="http://www.youtube.com/embed/2_mBh6bt_Go" frameborder="0" allowfullscreen&gt;&lt;/iframe&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/5637525353194937892-8327271276536675877?l=federicosantamarina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://federicosantamarina.blogspot.com/feeds/8327271276536675877/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://federicosantamarina.blogspot.com/2011/08/zapada.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5637525353194937892/posts/default/8327271276536675877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5637525353194937892/posts/default/8327271276536675877'/><link rel='alternate' type='text/html' href='http://federicosantamarina.blogspot.com/2011/08/zapada.html' title='Zapada'/><author><name>Federico Santamarina</name><uri>https://profiles.google.com/113274973637017992804</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-B3wdsBmsOXs/AAAAAAAAAAI/AAAAAAAAAFk/EZukzaHH2wg/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/2_mBh6bt_Go/default.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5637525353194937892.post-7238699750659302110</id><published>2011-05-24T18:00:00.000-03:00</published><updated>2011-05-24T18:00:25.483-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='face.com'/><title type='text'>Face.com</title><content type='html'>A&amp;nbsp;continuación&amp;nbsp;va un ejemplo en bruto de mi primer día contra FACE.COM.&lt;br /&gt;Es un ejemplo en c# de como entrenar primero y ver los resultados del training&amp;nbsp;después&amp;nbsp;de las fotos subidas.&lt;br /&gt;La clase que se consume es la api c# de face.com, que espero que no cambie cuando la estes usando, pero casi seguro.&lt;br /&gt;El ejemplo no funciona con la clave que tiene por seguridad, hay que buscarse una clave en face.com&lt;br /&gt;Los dejo con el codigo espagueti mas feo que puedo hacer, pero que anda como un violin.&lt;br /&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Web;&lt;br /&gt;using System.Web.UI;&lt;br /&gt;using System.Web.UI.WebControls;&lt;br /&gt;using System.Collections;&lt;br /&gt;namespace Face.com&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp; public partial class _Default : System.Web.UI.Page&lt;br /&gt;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; string uid = "federicosantamarina";&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; List&lt;string&gt; nombres = new List&lt;string&gt; { "ALE@federicosantamarina", "NELL@federicosantamarina", "FEDE@federicosantamarina" };&lt;/string&gt;&lt;/string&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FaceRestAPI faceApi = new FaceRestAPI("3f43d3e7621b96a974e2e7dbdfa03333", "033f11afd4574b4cf6fbe45909763333" , string.Empty, true, "json", string.Empty, string.Empty);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (false)//training&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; List&lt;string&gt; imgs = new List&lt;string&gt;() {&amp;nbsp;&lt;/string&gt;&lt;/string&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "http://a5.sphotos.ak.fbcdn.net/photos-ak-snc1/v4651/71/10/541459063/n541459063_2017044_7529649.jpg",&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "http://a5.sphotos.ak.fbcdn.net/hphotos-ak-snc6/207182_10150157387049064_541459063_6838103_5266906_n.jpg",&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "http://a3.sphotos.ak.fbcdn.net/hphotos-ak-snc1/6334_121858084063_541459063_2518311_1381298_n.jpg",&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; ////Before Face Recognition can be used, you'll need to train the face.com index:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ////Call faces.detect on photos of the user you want to add to the index&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var r = faceApi.faces_detect(imgs, string.Empty, nombres, string.Empty);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ////Call tags.save with the temporary tag IDs returned by faces.detect, along with the relevant user ID&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int i = 0;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; List&lt;string&gt; uids = new List&lt;string&gt;();&lt;/string&gt;&lt;/string&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach (var f in r.photos)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var w = faceApi.tags_save(new List&lt;string&gt; { f.tags[0].tid }, nombres[i], nombres[i], nombres[i]);&lt;/string&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var s = faceApi.faces_train(new List&lt;string&gt;{f.tags[0].uids[0].uid}, "federicosantamarina", string.Empty);&lt;/string&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var j = faceApi.faces_status(new List&lt;string&gt; { f.tags[0].uids[0].uid }, "federicosantamarina");&lt;/string&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i++;&lt;br /&gt;&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;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else &amp;nbsp;// reconocimiento&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; List&lt;string&gt; imgs = new List&lt;string&gt;() {&amp;nbsp;&lt;/string&gt;&lt;/string&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "http://a5.sphotos.ak.fbcdn.net/photos-ak-snc1/v4651/71/10/541459063/n541459063_2017044_7529649.jpg",&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "http://a5.sphotos.ak.fbcdn.net/hphotos-ak-snc6/207182_10150157387049064_541459063_6838103_5266906_n.jpg",&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "http://a3.sphotos.ak.fbcdn.net/hphotos-ak-snc1/6334_121858084063_541459063_2518311_1381298_n.jpg",&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "http://4.bp.blogspot.com/_2HBKKGkuLiA/S-USjsWqK-I/AAAAAAAAAGw/94AsmkjAq7A/s1600/Caras%2BGraciosas-Felicidad.jpg"&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ,"http://a5.sphotos.ak.fbcdn.net/hphotos-ak-snc3/11035_169969659063_541459063_2977737_6999284_n.jpg"&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var v = faceApi.faces_recognize(imgs, nombres, uid,"true", string.Empty, null, string.Empty);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int j = 0;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; foreach (var f in v.photos)&lt;br /&gt;&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; j++;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try&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; Response.Write("&amp;lt;hr&amp;gt;"+ j.ToString()+ " - " + f.tags[0].uids[0].uid + "- + - " + f.tags[0].uids[0].confidence);&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; Response.Write(@"&amp;lt;img src='" +f.url + "'&amp;gt;");&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; catch {&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; Response.Write("&amp;lt;hr&amp;gt;" + j.ToString() + " - " + f.pid);&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; Response.Write(@"&amp;lt;img src='" + f.url + "'&amp;gt;");&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; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Response.Write("&amp;lt;hr&amp;gt;");&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; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;div&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/5637525353194937892-7238699750659302110?l=federicosantamarina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://federicosantamarina.blogspot.com/feeds/7238699750659302110/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://federicosantamarina.blogspot.com/2011/05/facecom.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5637525353194937892/posts/default/7238699750659302110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5637525353194937892/posts/default/7238699750659302110'/><link rel='alternate' type='text/html' href='http://federicosantamarina.blogspot.com/2011/05/facecom.html' title='Face.com'/><author><name>Federico Santamarina</name><uri>https://profiles.google.com/113274973637017992804</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-B3wdsBmsOXs/AAAAAAAAAAI/AAAAAAAAAFk/EZukzaHH2wg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5637525353194937892.post-4295469004979913432</id><published>2010-08-25T13:02:00.000-03:00</published><updated>2010-08-25T13:02:30.065-03:00</updated><title type='text'>Analysis about chart generation in javascript</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;strong&gt;&lt;u&gt;Gracias a Lisandro Pin que hizo el informe, lo publique para tenerlo a mano&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;strong&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;strong&gt;&lt;u&gt;GXT&lt;/u&gt;&amp;nbsp;(&lt;a href="http://www.sencha.com/products/gwt/" style="color: #2a5db0;" target="_blank"&gt;http://www.sencha.com/&lt;wbr&gt;&lt;/wbr&gt;products/gwt/&lt;/a&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Description:  Google web framework - the GXT component provides the charting functionality&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Version:  2.1.3&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Technology:  Java&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;License:  GPL / Commercial ($500 - $8000)&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Supported chart types: Line, area, pie, radar&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Interactivity:  Mouseover, click events, real time refresh (AJAX based)&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Comments:  Requieres using the *whole* GWT library&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;strong&gt;&lt;u&gt;Flot for jQuery&lt;/u&gt;&amp;nbsp;(&lt;a href="http://code.google.com/p/flot/" style="color: #2a5db0;" target="_blank"&gt;http://code.google.com/p/&lt;wbr&gt;&lt;/wbr&gt;flot/&lt;/a&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Description:  Javascript chart generation library, based on jQuery&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Version:  0.6&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Technology:  Javascript / HMTL Canvas&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;License:  MIT&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Supported chart types: Dot, line, area and bar in any combination. Supports plugins for extensions.&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Interactivity:  Hide/show series, rectangular selection with zoom, panning, data point interaction, tooltips&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Comments:  Speedy and compact. May be extended with plugins (&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;a href="http://www.jumware.com/Includes/jquery/Flot/Examples/index.html" style="color: #2a5db0;" target="_blank"&gt;http://www.jumware.com/&lt;wbr&gt;&lt;/wbr&gt;Includes/jquery/Flot/Examples/&lt;wbr&gt;&lt;/wbr&gt;index.html&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;) to provide&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;support for cascade, bubble, bandwidth, radar and Gant charts, but the support for these isn't as robust as the built-in ones.&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;strong&gt;&lt;u&gt;gRaphael&lt;/u&gt;&amp;nbsp;(&lt;a href="http://g.raphaeljs.com/" style="color: #2a5db0;" target="_blank"&gt;http://g.raphaeljs.com/&lt;/a&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Description:  Javascript chart generation library, based on Raphael (&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;a href="http://raphaeljs.com/" style="color: #2a5db0;" target="_blank"&gt;http://raphaeljs.com/&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;)&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Version:  0.4.1b&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Technology:  Javascript / SVG&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;License:  MIT&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Supported chart types: Pie, line, dot, bar&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Interactivity:  Mouseover&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Comments:  Limited functionality, and heavily dependent on several advanced SVG features; might present rendering problems on some&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;browsers (Opera y Safari, f.ex.)&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;strong&gt;&lt;u&gt;jQuery Sparklines&lt;/u&gt;&amp;nbsp;(&lt;a href="http://omnipotent.net/jquery.sparkline/" style="color: #2a5db0;" target="_blank"&gt;http://omnipotent.net/jquery.&lt;wbr&gt;&lt;/wbr&gt;sparkline/&lt;/a&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Description:  Javascript library to generate Sparkline chats (&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Sparkline" style="color: #2a5db0;" target="_blank"&gt;http://en.wikipedia.org/wiki/&lt;wbr&gt;&lt;/wbr&gt;Sparkline&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;)&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Version:  1.5.1&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Technology:  Javascript / HTML Canvas&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;License:  MIT&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Supported chart types: Sparklines&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Interactivity:  None&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Comments:  Excellent library if only Sparkline charts are required&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;strong&gt;&lt;u&gt;jqPlot&lt;/u&gt;&amp;nbsp;(&lt;a href="http://www.jqplot.com/tests/" style="color: #2a5db0;" target="_blank"&gt;http://www.jqplot.com/tests/&lt;/a&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Description:  Javascript chart generation library, based on jQuery&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Version:  0.9.7&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Technology:  Javascript / HTML Canvas&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;License:  GPL / MIT&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Supported chart types: Line, bar, area, pie&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Interactivity:  Mouseover, zoooming, panning, real time data modification&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Comments:  Supports additional options like automatic average/trend calculation and line shading. Supported chart types are somewhat&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;limited, but almost everything related to the chart is modifiable by the developer.&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;strong&gt;&lt;u&gt;Highcharts&lt;/u&gt;&amp;nbsp;(&lt;a href="http://www.highcharts.com/" style="color: #2a5db0;" target="_blank"&gt;http://www.highcharts.com/&lt;/a&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Description:  Javascript chart generation library&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Version:  2.0.3&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Technology:  Javascript / SVG&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;License:  CCA-Non Commercial / Commercial (Highslide Software License, $80 - $2000)&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Supported chart types: Line, spline, scatter, area, bar, pie, donut and combinations&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Interactivity:  Automatic data update, zooming, mouseover, panning, data point detil and realtime modification&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Comments:  Very complete and professional, but requires licensing for commercial use.&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;strong&gt;&lt;u&gt;PlotKit&lt;/u&gt;&amp;nbsp;(&lt;a href="http://media.liquidx.net/js/plotkit-doc/PlotKit.html" style="color: #2a5db0;" target="_blank"&gt;http://media.liquidx.net/js/&lt;wbr&gt;&lt;/wbr&gt;plotkit-doc/PlotKit.html&lt;/a&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Description:  Javascript chary generation library, based on Möchkit (&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;a href="http://www.mochikit.com/about.html" style="color: #2a5db0;" target="_blank"&gt;http://www.mochikit.com/&lt;wbr&gt;&lt;/wbr&gt;about.html&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;)&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Version:  0.9.1&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Technology:  Javascript / HTML Canvas / SVG&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;License:  BSD&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Supported chart types: Pie, bar, area&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Interactivity:  None&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Comments:  Limited functionality - only advisable for projects already using Möchkit&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;strong&gt;&lt;u&gt;Google Charts Tools - Chart API&lt;/u&gt;&amp;nbsp;(&lt;a href="http://code.google.com/apis/chart" style="color: #2a5db0;" target="_blank"&gt;http://code.google.com/apis/&lt;wbr&gt;&lt;/wbr&gt;chart&lt;/a&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Description:  Google online static chart generation service&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Version:  n/a (constantly evolving)&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Technology:  Static PNG images generated from an URL&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;License:  Terms of service agreement available in&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;a href="http://code.google.com/apis/chart/terms.html" style="color: #2a5db0;" target="_blank"&gt;http://code.google.com/apis/&lt;wbr&gt;&lt;/wbr&gt;chart/terms.html&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;- no restrictions for either personal or&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;commercial use, no warranties provided&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Supported chart types: Bar, box, candlestick, dynamic icon, gauge, line, map, mathematic formulas, pie, QR, radar, spread, Venn diagrams&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Interactivity:  None&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Comments:  By far the best solution regarding supported chart types and their presentation, it's also the least flexible&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;strong&gt;&lt;u&gt;Google Chart Tools - Interactive Charts&lt;/u&gt;&amp;nbsp;(&lt;a href="http://code.google.com/apis/visualization/interactive_charts.html" style="color: #2a5db0;" target="_blank"&gt;http://code.google.com/apis/&lt;wbr&gt;&lt;/wbr&gt;visualization/interactive_&lt;wbr&gt;&lt;/wbr&gt;charts.html&lt;/a&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Description:  Google online interactive generation service&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Version:  n/a&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Technology:  Javascript / SVG / VML / Flash (only specific charts)&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;License:  Terms of service agreement available in&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;a href="http://code.google.com/apis/chart/terms.html" style="color: #2a5db0;" target="_blank"&gt;http://code.google.com/apis/&lt;wbr&gt;&lt;/wbr&gt;chart/terms.html&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;- no restrictions for either personal or&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;commercial use, no warranties provided&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Supported chart types: Timeline, area, line, bar, heatmap, gauge, map, pie, scatter, Sparkline, table&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Interactivity:  Mouseover, clicking events and item selection&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Comments:  Built over the same technology fueling the static Charts API; very visually pleasing charts&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;strong&gt;&lt;u&gt;JavaScript InfoVis Toolkit&lt;/u&gt;&amp;nbsp;(&lt;a href="http://thejit.org/" style="color: #2a5db0;" target="_blank"&gt;http://thejit.org/&lt;/a&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Description:  Javascript chart generation library&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Version:  2.0.0 - customized builds with limited chart support can be created&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Technology:  Javascript / HTML Canvas&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;License:  BSD&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Supported chart types: Area, bar, pie, tree, icicle, sunbust, treemap, spacetree, forcedirected, rGraph, hypertree, nodes&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Interactivity:  Mouseover&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Comments:  Excellent support for "unusual" chart styles&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;strong&gt;&lt;u&gt;RGraph&lt;/u&gt;&amp;nbsp;(&lt;a href="http://www.rgraph.net/" style="color: #2a5db0;" target="_blank"&gt;http://www.rgraph.net/&lt;/a&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Description:  Javascript chart generation library&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Version:  2010_08_21&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Technology:  Javascript / HTML Canvas&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;License:  RGraph License 1.5.4 - free for personal/open source use, 45 £ for commercial applications&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Supported chart types: Bar, pie, donut, funnel, Gantt, LED grid, line, meter/odometer, Rose, scatter, radial scatter, radar, progress&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Interactivity:  Mouse annotations, tooltips, zooming, adjusting/rescaling, asynchronus processing, animation&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: 'courier new', monospace; font-size: 13px;"&gt;Comments:  Feature packed and flexible, but the HTML5 rendering might be an issue with older browsers. Remarkably accesible commercial license.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5637525353194937892-4295469004979913432?l=federicosantamarina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://federicosantamarina.blogspot.com/feeds/4295469004979913432/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://federicosantamarina.blogspot.com/2010/08/analysis-about-chart-generation-in.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5637525353194937892/posts/default/4295469004979913432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5637525353194937892/posts/default/4295469004979913432'/><link rel='alternate' type='text/html' href='http://federicosantamarina.blogspot.com/2010/08/analysis-about-chart-generation-in.html' title='Analysis about chart generation in javascript'/><author><name>Federico Santamarina</name><uri>https://profiles.google.com/113274973637017992804</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-B3wdsBmsOXs/AAAAAAAAAAI/AAAAAAAAAFk/EZukzaHH2wg/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5637525353194937892.post-1237233925151096150</id><published>2009-10-23T22:33:00.003-03:00</published><updated>2009-10-27T12:01:53.519-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET AJAX EVENTOS html'/><title type='text'>Acceso a los eventos HTML desde el servidor en ASP.NET</title><content type='html'>Hoy me encontre con un problema de usabilidad. Mi pantalla necesitaba para ser bonita que cuando yo saliera de un textbox ejecutara un sub. Todo por ajax. &lt;br /&gt;Necesitaba el evento onblur en el servidor para un textbox, pero no tenia ganas de escribir una sola linea de javascript, ya que me puse como requisito que el codigo fuera facilmente mantenible por un junnior.&lt;br /&gt;Lo primero que hice fue agregar un boton a la pagina, un boton asp.net clasico y entre en su metodo click. Ahi realice una llamada a la rutina. Despues oculte el boton. Ahi ya podia hacer un getElementById(clientIdBoton ).click y hacer que funcione, pero necesitaba esa linea de javascript en el onblur.&lt;br /&gt;Encontre 4 lineas de codigo c# en ingles que resumi en una de VB en castellano que despues la pondre en su lugar, ya que la tengo en otra pc.&lt;br /&gt;La idea es que se obtiene por un metodo el __dopostback('clienIdDelControl','') de cualquier control y este se agrega a la coleccion de atributos, para el atributo onblur, haciendo que cuando sucede el evento onblur en el control elegido, en mi caso un textbox, se haga click en el boton.&lt;br /&gt;De esta forma tenemos acceso por servidor incluso a mouseover o cualquier evento de un tag html, sin javascript. &lt;br /&gt;Algo malevolo sucede con el boton, ya que el visible=false deja de funcionar, pero ya es muy sencillo esconderlo dentro de un div con display:none. Me quedo la curiosidad de ver por que , pero la timeline no me dejo la posibilidad de seguir jugando. Debe ser un error en el render de la pagina.&lt;br /&gt;En definitiva la pagina quedo con una grilla con textbox y checkbox. En cualquier textbox puedo ingresar valores y (lo mas divertido) en el header tengo un textbox. Si pongo ahi un valor este se divide proporcionalmente en todos los checkbox tildados cuando se dispara su onblur. Un toque de magia mas y cuando chequeo otro checkbox, el valor se divide nuevamente por la cantidad de checkbox y en los chequeados se recalcula.&lt;br /&gt;Esta es la linea&amp;nbsp;mágica&amp;nbsp;de&amp;nbsp;código&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;'al evento onblur le paso el controlador de eventos del boton cmdCalcularManual&lt;br /&gt;&lt;br /&gt;DirectCast(gridItems.HeaderRow.FindControl("txtAjusteADistribuir"), TextBox).Attributes.Add("onblur", ClientScript.GetPostBackEventReference(cmdCalcularManual, ""))&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Adonde a la cabecera de una grilla le añado en el evento onblur el manejador de eventos de el boton cmdCalcularManual.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;En realidad el unico evento que existe es el submit, en html (desde el punto de vista del server ), asi que ahora hago un submit cada ves que salgo del textbox.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Asi seria para una grilla :&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Protected Sub gridItems_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gridItems.RowCommand&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;Select Case (e.CommandName)&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;Case "onrelease"&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;CalcularTotalActual(True)&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;End Select&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Protected Sub gridItems_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gridItems.RowDataBound&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;Try&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;If e.Row.RowType = DataControlRowType.DataRow Then&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;Dim itemGrilla As itemGrillaClass = DirectCast(e.Row.DataItem, itemGrillaClass)&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;With itemGrilla&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;DirectCast(e.Row.FindControl("lblItem"), Label).Text = .Item&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;DirectCast(e.Row.FindControl("txtAjuste"), TextBox).Text = .Valor&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;DirectCast(e.Row.FindControl("txtAjuste"), TextBox).Attributes.Add("onblur", ClientScript.GetPostBackEventReference(e.Row.FindControl("cmdonrelease"), ""))&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;End With&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;End If&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;If e.Row.RowType = DataControlRowType.Footer Then&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;Dim listaDeAjustesManuales As New List(Of Ajustes)&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;Dim op As entidades.OperacionImportacion&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;Dim numeroOperacion As String = txOperacionSeteable.ValorSeleccionado&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;op = Factory.getInstance.getOperacionImportacion(numeroOperacion)&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;For Each ajuste As Ajustes In op.ajustes&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;If ajuste.codigoGastoDistribucion.ToUpper = "Y" Then&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;listaDeAjustesManuales.Add(ajuste)&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;End If&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;Next&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;DirectCast(e.Row.FindControl("txtTotal"), TextBox).Text = listaDeAjustesManuales(ViewState("posicionLista")).importeGasto.ToString&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;End If&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;Catch ex As Exception&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;Throw ex&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;End Try&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;End Sub&lt;br /&gt;-------------------------------------------------------------------------------------------------------&lt;br /&gt;HTML&lt;br /&gt;&lt;br /&gt;&lt;asp:templatefield headerstyle-horizontalalign="Left" headertext="Ajuste"&gt;&lt;/asp:templatefield&gt;&lt;br /&gt;&lt;headertemplate&gt;&lt;/headertemplate&gt;&lt;br /&gt;&lt;asp:label &amp;nbsp;cssclass="etiquetas" id="lblAjusteHeader" runat="server" text="Monto" tooltip="Monto a distribuir proporcionalmente entre los seleccionados"&gt;&lt;/asp:label&gt;&lt;br /&gt;&lt;asp:textbox cssclass="cTextbox" id="txtAjusteADistribuir" runat="server"&gt;&lt;/asp:textbox&gt;&lt;br /&gt;&lt;br /&gt;&lt;itemtemplate&gt;&lt;/itemtemplate&gt;&lt;br /&gt;&lt;asp:textbox cssclass="cTextbox" id="txtAjuste" runat="server"&gt;&lt;/asp:textbox&gt;&lt;br /&gt;&lt;asp:button commandname="onrelease" id="cmdonrelease" runat="server" text="" visible="False"&gt;&lt;/asp:button&gt;&lt;br /&gt;&lt;br /&gt;&lt;itemstyle horizontalalign="Right"&gt;&lt;/itemstyle&gt;&lt;br /&gt;&lt;footerstyle horizontalalign="Right"&gt;&lt;/footerstyle&gt;&lt;br /&gt;&lt;footertemplate&gt;&lt;/footertemplate&gt;&lt;br /&gt;&lt;asp:textbox cssclass="cTextbox" id="txtTotalActual" runat="server"&gt;&lt;/asp:textbox&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&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/5637525353194937892-1237233925151096150?l=federicosantamarina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://federicosantamarina.blogspot.com/feeds/1237233925151096150/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://federicosantamarina.blogspot.com/2009/10/acceso-los-eventos-html-desde-el.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5637525353194937892/posts/default/1237233925151096150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5637525353194937892/posts/default/1237233925151096150'/><link rel='alternate' type='text/html' href='http://federicosantamarina.blogspot.com/2009/10/acceso-los-eventos-html-desde-el.html' title='Acceso a los eventos HTML desde el servidor en ASP.NET'/><author><name>Federico Santamarina</name><uri>https://profiles.google.com/113274973637017992804</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-B3wdsBmsOXs/AAAAAAAAAAI/AAAAAAAAAFk/EZukzaHH2wg/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5637525353194937892.post-9003964571994388894</id><published>2009-10-19T17:54:00.002-03:00</published><updated>2009-10-23T22:31:27.039-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reflection'/><category scheme='http://www.blogger.com/atom/ns#' term='vb.net'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><title type='text'>Pasando objetos complejos con web services ASP.NET VB.NET</title><content type='html'>Hace unos dias me encontre con un problema por demas interesante.&lt;br /&gt;&lt;div&gt;Tengo que pasar un objeto complejo desde los clientes hasta los servidores de la empresa para analizar en la empresa si hay algun valor que esta mal.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lo que importa es que hay que pasar un objeto complejo de un lugar a otro con un web service.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Comence creando un web service para exponer el objeto y ahi me encontre con unos bucles infinitos debido a que el objeto, en sus objetos internos, tiene referencias a el mismo. El atributo xmlignore me ayudo a evitar el ciclo infinito.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;Protected _ItemsOperacion As List(Of ItemOperacionImportacion)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-family: monospace; font-size: 13px; white-space: pre-wrap;"&gt;&lt;span style="font-size: 13px;"&gt;xml.serialization.xmlignore()&lt;/span&gt; &lt;/span&gt;_ &amp;lt;--- entre mayor y menor, no puede ser tan dificil poner esos simbolos en un blog loco! ( primer dia )&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;Public Property ItemsOperacion() As List(Of ItemOperacionImportacion)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;Get&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;If _ItemsOperacion Is Nothing Then&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;_ItemsOperacion = New List(Of ItemOperacionImportacion)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;If modo &amp;lt;&amp;gt; EstadoObjetoEnum.insert And Me.numero &amp;lt;&amp;gt; 0 Then&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;Dim clausulaWhere As String&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;clausulaWhere = String.Format("idOperacion={0}", DBFunctions.objectToDB(Me.numero))&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;listAdapter(Factory.getInstance.getListObject(GetType(ItemOperacionImportacion), clausulaWhere), _ItemsOperacion)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;End If&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;End If&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;Return _ItemsOperacion&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;End Get&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;Set(ByVal value As List(Of ItemOperacionImportacion))&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;_ItemsOperacion = value&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;End Set&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;End Property&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;De esta forma ya evitaba el bucle infinito y podia serializar el objeto. Claro que el objeto posee muchos objetos en su interior, incluso colecciones de objetos que lo referencian ( y con objetos internos que son referenciados por los internos de los mismos ), pero con eso ya alcanza para evitar los bucles.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Me quedo un problema, que era hacer un adapter para la clase proxy que crea por mi el web service, la magia de microsoft, pero el objeto es tan grande que tardaria muchos dias en recorrer todos sus objetos y todas sus colecciones. Lo peor es que iba a ser el trabajo mas tedioso de mi vida.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ahi me di cuenta que necesitaba automatizar el cast de la clase proxy al objeto inicial de alguna forma y que no podia ser muy dificil porque los metodos se llaman igual.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Entonces estuve un dia haciendo esta funcion:&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;Private Function parsear(ByVal objetoEntidades As Object) As Object&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;'TeWeSErvi --&amp;gt; Nombre del proyecto&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;'localhost --&amp;gt; Namespace de la clase proxy, generado automaticamente al referenciar el web service&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;Dim objectType As Type = Type.GetType("TeWeSErvi.localhost." &amp;amp; objetoEntidades.GetType.ToString.Split(".")(1) &amp;amp; ", TeWeSErvi, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null")&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;Dim dto As Object = Activator.CreateInstance(objectType)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;Dim pr As PropertyInfo() = dto.GetType.GetProperties()&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;For Each m As PropertyInfo In pr&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;Dim valorEntidades As Object&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;If dto.GetType.GetProperty(m.Name) IsNot Nothing Then&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;valorEntidades = objetoEntidades.GetType.GetProperty(m.Name).GetValue(objetoEntidades, Nothing)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;If valorEntidades IsNot Nothing Then&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;If valorEntidades.GetType.IsGenericType Then&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;Dim coleccion As IList = valorEntidades&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;Dim tipoObjetoLista As Type = Type.GetType(m.PropertyType.AssemblyQualifiedName.Replace("[", "").Replace("]", ""))&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;Dim coleccionProxy As Object = Array.CreateInstance(tipoObjetoLista, coleccion.Count)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;Dim i As Integer = 0&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;For Each item As Object In coleccion&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;Dim resultadoItem As Object = parsear(item)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;If resultadoItem IsNot Nothing Then&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;coleccionProxy(i) = resultadoItem&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;i += 1&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;End If&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;Next&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;m.SetValue(dto, coleccionProxy, Nothing)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;coleccionProxy = Nothing&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;End If&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;If valorEntidades.GetType.IsSubclassOf(GetType(entidades.base)) Then&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;m.SetValue(dto, parsear(valorEntidades), Nothing)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;Else&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;If Not valorEntidades.GetType.IsGenericType Then&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;m.SetValue(dto, valorEntidades, Nothing)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;End If&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;End If&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;End If&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;End If&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;Next&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;Return dto&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;code&gt;&lt;span style="white-space: pre;"&gt;&lt;/span&gt;End Function&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lo que hace es por reflection convertir un objeto del tipo original al objeto del tipo proxy y de esta forma envio el objeto proxy y en el web service puedo guardar el objeto del tipo operacionImportacion en mi caso, con el unico requisito de que este objeto y todos los internos hereden de entidades.base, o como se llame tu objeto base. Solo hay que cambiar donde dice entidades base y funciona para cualquier objeto en cualquier jerarquia.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;En principio los web services son para enviar informacion , no para recibir objetos, me han dicho, pero hay que adecuarse a las necesidades del caso. Es mas facil mantener un ws que uno por cliente y la empresa posee muchos.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Este fue mi primer enfrentamiento con reflection y pienso que sali victorioso&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Incluso hay cosas divertidas en este codigo. &lt;br /&gt;&lt;/div&gt;&lt;div&gt;Si por ejemplo a la variable i no la haces = 0 mantiene el valor en las entradas recursivas.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Descubri que si asigno un objeto a una variable object, conserva el tipo en la propiedad getType.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Y ni hablar de que en vb.net podes escribir el valor de una propiedad sin que este declarada en el tipo, pero si estas en un subtipo que la tiene la podes usar. Al final vb.net es como javascript y no me habia enterado. Eso me pasa por empezar .net con c#.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Me quedaron dudas con los genericos, no analize todavia si el proxy los implementa como arrays o simplemente los genericos son arrays para el compilador, ya que, habran visto que no instancio un generic sino que instancio un array. Cosas de la vida. &lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5637525353194937892-9003964571994388894?l=federicosantamarina.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://federicosantamarina.blogspot.com/feeds/9003964571994388894/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://federicosantamarina.blogspot.com/2009/10/un-problema-complejo-con-web-services.html#comment-form' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5637525353194937892/posts/default/9003964571994388894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5637525353194937892/posts/default/9003964571994388894'/><link rel='alternate' type='text/html' href='http://federicosantamarina.blogspot.com/2009/10/un-problema-complejo-con-web-services.html' title='Pasando objetos complejos con web services ASP.NET VB.NET'/><author><name>Federico Santamarina</name><uri>https://profiles.google.com/113274973637017992804</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-B3wdsBmsOXs/AAAAAAAAAAI/AAAAAAAAAFk/EZukzaHH2wg/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry></feed>
