Wednesday, November 10, 2010

Modal Popup de jQuery en MOSS 2007 con EventHandling de botones ASP.NET

Desde hace un par de semanas he dejado a un lado SharePoint 2010 y he estado retocando un viejo proyecto de SharePoint 2007. Entre otras muchas cosas, me ha tocado hacer frente a la configuración del AjaxControlToolkit en un portal de publicación, algo que ya había hecho hacía un año sin problemas. Con esto quería conseguir cosas como los ModalPopupExtender que tanto gustan a los UX designers.

Pues bien, será que me he vuelto más viejo, más tonto, o ambas, porque aún siguiendo el manual "straightforward" de MS, no logré hacer que funcionara (claro, que también puede ser la cantidad ingente de modificaciones que hay que hacer al web.config... grrr).

Hablando con Luru del problema, me acabó convenciendo de que jQuery es mucho mejor, y de que además "es el futuro, maaacho". Sinceramente mis recuerdos de hace un año sobre jQuery eran desastrosos, por eso elegí AJAX en su día. El caso es que la desesperación hizo que me bajara los .js de jQueryUI y una CSS que me gustó de su página, con la intención de conseguir algo parecido a esto.

Mmmhhh... no tenía mala pinta, pero ¿funcionaría? Meto los .js y los CSS en el LAYOUTS de la carpeta 14 12 y los añado en la master page, haciendo referencia directa a la ruta "_layouts/jquery-ui-1.8.6.custom.js" y a la de jquery. También incluyo el siguiente código en mi User Control con el panel que quiero mostrar en el popup.



$(document).ready(function () {
$("#panelAdjuntar").dialog(
{
autoOpen: false,
modal: true
});

$("#btAdjuntar").click(function (event) {
$("#panelAdjuntar").dialog('open');
});
});




En donde btAdjuntar es un botón en cliente normal, de los de toda la vida:






Y el panelAdjuntar es el div que quiero mostrar en el modal popup. Este div incluye varios controles ASP.NET como Label, Button, TextBox, FileUploads, y sus respectivos EventHandler.



...



Pruebo todo esto y voilá. Funciona! Juhuuu! Muestra el modal popup y además es bonito :-)

Le doy a uno de los botones ASP.NET de dentro de nuestro div panelAdjuntar y........... me c$#@-kW%a!!! No funciona nada. Depuro el código y tampoco. Vamos, que no hace nada, que no pilla el click del botón :-(

Un par de minutos más tarde encontré la solución aquí. Al parecer hay que modificar el código moviendo el div al form, y que así pille los eventos. El script me queda así entonces.





Y ahora sí que funciona el modal popup. Con sus botones ASP.NET y todo. Y además sigue siendo chulo :-)

Y yo... definitivamente me paso a jQuery. Gracias Luru!


PS: ¿Y vosotros? ¿jQuery o Ajax?.......


1 comment: