|
Ir a página
|
Siguientes >>
|
|
Plugin de jQuery: mejora del datepicker
|
Volver arriba
|
|
Últimamente le estoy dando mucha caña a jQuery
jQuery no es más que una capa por encima a javascript, además de una forma de establecer unas convenciones de uso. Esto último permite un buen ecosistema de plugins que a su vez redunda en hacer jQuery más estandarizado.
Pero vamos al grano: he estado trabajando en el plugin de jquery UI: Datepicker. Es bastante completito. Yo lo estoy usando de modo que haciendo click sobre un textbox aparezca un calendario.
Éste actualiza el textbox con la fecha en la que te encuentras, pero sólo al hacer click en el día elegido. El problema es que cuando cambias de mes o de año, no actualiza el textbox, con lo que se está comportando de forma extraña... por lo menos diferente a como se comportan otros calendarios como el propio de Windows.
Pero con un pequeño truquito tiene solución fácil, gracias al evento onChangeMonthYear.
El código es éste:
$(".Calendar").datepicker({ onChangeMonthYear: function(year, month, inst) { $(this).val($.datepicker._formatDate(inst, inst.currentDay, month-1, year)); } });
Espero que os sea útil ;)
|
|
jQuery, Ajax y ASP.NET WebForms
|
Volver arriba
|
|
Admito que al principio era reticente a usar jQuery. Al fin y al cabo, todo lo que hace jQuery se puede hacer con javascript, y no lo veía más que como otro framework javascript más.
Sin embargo, conforme he ido utilizándola por necesidades de nuestro nuevo proyecto en Avanzis, más me ha ido gustando... y ahora me es prácticamente imprescindible :D
De la funcionalidad que quería hablar es sobre cómo se trabaja con Ajax en jQuery, y su aplicación para ASP.NET Webforms (con ASP.NET MVC es algo más fácil).
En la página oficial de jQuery encontramos una muy buena documentación de su uso con Ajax. Personalmente el método que más uso es el de getJSON.
Vayamos directamente al ejemplo. Bien sencillo: tenemos un TextBox y un Button. En el texto escribiremos un entero, y al presionar sobre el botón se ejecutará una función jQuery/Ajax que enviará el dato a servidor. En el servidor procesaremos el dato y devolveremos un resultado que nuestro javascript procesará. Vamos una ida-y-vuelta al navegador usando Ajax.
Nuestro HTML: <input type="text" id="box" /> <input type="button" id="button" />
Nuestro javascript: $(document).ready(function() { $('#button').click(function() { var idValue = $('#box').val(); if (idValue && (idValue != '')) { sendData(idValue); } }); });
function sendData(idValue) { var actionData = { id: idValue }; $.getJSON('/test/ajaxtest.aspx', actionData, function(data) { if (data == true) { alert('par'); } else if (data == false) { alert('impar'); } }); };
Nuestro código en servidor: protected void Page_Load(object sender, EventArgs e) { if (!string.IsNullOrEmpty(Request.QueryString["id"])) { int id = Convert.ToInt32(Request.QueryString["id"]);
if (id%2 == 0) returnJSON(true);
returnJSON(false); } }
protected void returnJSON(object data) { if (data.GetType() == typeof(bool)) data = data.ToString().ToLower();
Response.Clear(); Response.ContentType = "application/json"; Response.Flush(); Response.Write(data); Response.End(); }
Como vemos, en nuestro código javascript lo primero que hacemos es decirle al navegador que en el momento esté preparado ("ready") coja el elemento con el identificador "button" y le asigne una función a su evento "click".
Dicha función lo único que hace es coger el valor del elemento con identificador "box", y si este valor es válido se ejecuta la funcion "sendData". La función "sendData" es la importante... y para ser importante es bien sencillita :D
Lo primero que hacemos es crear el elemento JSON, que será el dato que mandaremos a servidor.
Luego ejecutamos la función getJSON. Ésta se compone de tres parámetros. El primero es la URL a la que apuntamos. En nuestro caso ponemos un página .aspx normal y corriente. También podríamos crearnos un HttpHandler que gestionara todas las llamadas AJAX, o si estuvieramos usando ASP.NET MVC no tendríamos más que poner la ruta correspondiente.
El segundo parámetro es la variable json con los datos que enviaremos a servidor. Y el tercer parámetro es la función que se ejecutará cuando vuelva de servidor y que luego analizaremos. Lo importante de esta función es que el dato que devuelven ya está en JSON, con lo que es muy fácil trabajar con él.
En cuanto al código de servidor, también es muy sencillo. Lo único que hace es recoger el dato que hemos enviado (y que en este caso se recibe como querystring), tratarlo y devolver una respuesta.
El quid de la cuestión está en que la respuesta debe ser un JSON, de lo cual se encarga el método "returnJSON". En nuestro ejemplo sólo devolvemos true o false, pero si creamos una variable JSON cualquiera igual nos vale (por ejemplo "{text:'texto de respuesta'}").
Y volviendo a la función javascript, vemos que tratar con JSON es muy sencillo. En nuestro caso sólo tratamos el "true" o el "false". Para mí es muy común trabajar sólo con eso, puesto que lo normal es mandar un dato a servidor, realizar una acción y devolver un booleano como diciendo "todo correcto" o "ups, ha habido un error".
Fácil, ¿no?
|
|
Mi blog personal
|
Volver arriba
|
Hace tiempo que le tenía ganas, y por fin me ha lanzado.
Ya tengo blog personal como Javier Navarro. (http://www.javiernavarro.net/). No sé si es un error, porque Subgurim.net está muy bien posicionado y me lee bastante gente. Comenzar con JavierNavarro.net desde cero es algo atrevido... pero qué narices, lo hago porque quiero y no espero apenas visitas.
Lo separo porque en este blog quiero seguir hablando en exclusiva de ASP.NET, Javascript, C#, Bases de datos, etc, y en mi blog personal hablaré de más o menos lo que me venga en gana, desde cosas personales hasta, sobretodo, temas del mundo de los emprendedores, la tecnología e Internet.
Ya sabéis, estáis todos invitados a mi blog: Javier Navarro.
PD: Si me considero un SEO mínimamente razonable, tengo que salir primero en Google como "Javier Navarro".
|
|
Dicatio y su primer proyecto
|
Volver arriba
|
Como se puede ver fácilmente en el menú izquierdo de este blog, y como saben todos los que me conocen, no me puedo estar quieto y siempre estoy pensando en nuevos proyectos Web.
En los últimos meses sólo había tenido tiempo para mantener los proyectos que fui creando compulsivamente con mi no menos compulsiva "creatividad".
Ahora sólo mantengo el control de GoogleMaps para ASP.NET, y los contenidos de discotequeros.com
Los demás proyectos los he hecho OpenSource... ojalá tuviera tiempo para mantenerlo :(
Este mismo blog sufre de mi falta de tiempo, pero más sufren otros de mis proyectos que considero que son herramientas muy buenas, sobretodo tusencuestas.com. Es una lástima que a una Web que está tan bien posicionada en Google (aparece el tercero por "encuestas") no pueda dedicarle tiempo. ¡¡Por falta de ideas no será!!
Postrándose ante la teoría del de quien mucho abarca poco aprieta, creo que ha llegado el momento de centrarse en un solo proyecto, aunque continuando un mínimo mantenimiento de los más importantes (discotequeros y googlemaps).
De ahí ha nacido Dicatio. Dicatio es el nombre en clave de un grupo de amigos/socios con ideas frescas y ganas de trabajar. Bajo el nombre de Dicatio tenemos pensado agrupar una serie de proyectos (unos Web y otros no tanto), y ya estamos comenzando por el primero.
De momento no os puedo hablar de ese nuevo proyecto, porque está en fase de desarrollo y no me gusta enseñar cosas que están a medio hacer, pero a mí me gusta mucho la idea. De hecho me motiva mucho, y la motivación es la clave de tener ganas de trabajar cuando acabas de trabajar.
Este sábado 8 de Noviembre tenemos la Primera Jornada Dicatio, en una reunión maratoniana donde definiremos las bases de Dicatio y de su primer proyecto.
Por cierto, el nombre de Dicatio significa "Dedicación" en latín. Es curiosa la similitud con Avanzis, la empresa en que trabajo... pero no tiene nada que ver. De hecho, el nombre "Dicatio" surgió años antes de que yo comenzara a trabajar en Avanzis, y el que se lo inventó (no sé si fue Roberto o Jaumonla) ni tal si quiera conocía que existía Avanzis.
De hecho, lo más curioso es que la empresa de mi padre se llama Vincit Decoración, que fue creada en el siglo pasado (1998), así que por lo visto estoy rodeado de latinismos, jajaja.
Lo dicho, ya os iré hablando más de Dicatio, de sus componentes, de su primer proyecto, etc.
|
|
Concurso SEO de Hazruido.com: comunactivo es la palabra elegida.
|
Volver arriba
|
El pasado 15 de Octubre comenzó la tercera edición del concurso de Hazruido.com en busca de "quién hace más ruido en Internet". El concurso tiene dos modalidades: posicionamiento y marketing viral. Personalmente siempre me había llamado la atención este concurso así que este año he decidido participar en la modalidad de posicionamiento. En esta modalidad, Hazruido.com hizo pública una palabra que no estaba indexada en Google, de modo que el ganador será quien esté en primera posición en una búsqueda de Google España el día 15 de diciembre a las 12:00. La palabra en cuestión es comunactivo. Es una palabra graciosa, la verdad. La Web desde la que concurso es "http://comunactivo.subgurim.net" y como podréis comprobar es un clon de este blog si tengo tiempo ya le cambiaré el diseño. Así pues, el que crea que este blog le ha servido de algo en el mundo de ASP.NET y quiere agradecérmelo de alguno forma, puede hacerlo de forma muy sencilla sin más que enlazar a "http://comunactivo.subgurim.net" utilizando el anchor "comunactivo". Aunque os creáis que vuestra web/blog es demasiado pequeña y que no servirá de ayuda, estáis equivocados. Un pequeño enlace es también muy importante. Para facilitaros más el trabajo, os pongo el código HTML que más me beneficiaría: <a href="http://comunactivo.subgurim.net" alt="comunactivo">comunactivo</a> ¡¡Gracias por vuestro apoyo!!
|
|
Vídeo tutorial: Introducción a ASP.NET AJAX
|
Volver arriba
|
Con ASP.NET AJAX podemos transformar nuestra aplicación Web normal en una aplicación AJAX en pocos minutos y sin ningún código adicional. En menos de 10 minutos de vídeo tutorial conoceremos cómo usar el UpdatePanel, el UpdateProgress y el Timer. Sobretodo nos haremos hincapié en el primero (el UpdatePanel) por tratarse del elemento mágico que es capaz de llevarlo todo a cabo: DESCAGAR VÍDEO TUTORIAL
|
|
Geolocalización a partir de la IP
|
Volver arriba
|
La geolocalización de usuarios a partir de la IP está al orden del día.
Seguro que habéis entrado alguna vez en una Web donde, sorprendentemente ofrecían productos o servicios referentes a una zona muy cercana a donde os encontrábais. Por ejemplo, la típica web donde nos dice "Esta chica es de TALSITIO y quiere conocerte", y TALSITIO es tu ciudad o la de al lado.
En principio hay cierta complejidad. Recoger nuestra IP es muy sencillo, pero luego necesitamos una BBDD donde se asocie nuestra IP a una región... y ¿dónde encuentro esa BBDD?, ¿es esa BBDD muy grande?, ¿qué hay de la eficiencia: velocidad, concurrencia...)
Afortunadamente, los chicos de MaxMind han resuelto todos los problemas, y nos ofrecen tanto la base de datos como el código fuente que la accede de forma eficiente. Podéis encontrar toda la información aquí.
Yo por mi parte, os he hecho la vida un poco más fácil y os he dejado para descarga directa una Website en ASP.NET 2.0 con todo bien facilito y preparado para el uso.
En este website, tres son las líneas que hacen el trabajo mágico:
string databaseFile = Server.MapPath("~/App_Data/GeoLiteCity.dat"); LookupService service = new LookupService(databaseFile); Location location = service.getLocation(tbIP.Text);
En la primero indicamos el path donde hemos ubicado la base de datos. Ésta no se incluye en la descarga porque es muy pesada y porque en MaxMind la actualizan mensualmente. La podéis encontrar aquí (descarga directa).
La segunda línea inicializa LookupService, que practicamente lo hace todo. El método más completo del LookupService es el getLocation (tercera línea), que te devuelve un objeto de tipo Location desde el que podremos acceder a varias propiedades interesantes:
- Latitude - Longitude - Region - Area_Code - Countryname - Countrycode - City - Postalcode
Pues dicho y hecho. Así de fácil y así de sencillo.
DESCARGAR CÓDIGO
|
|
Ir a página
|
Siguientes >>
|
|
|