JQuery UI dialog e ASP.Net postback 

Thursday, February 02, 2012 12:57:47 PM

Tip: per far funzionare controlli server all’interno di un dialog jQuery UI e’ necessario un piccolo trick.

<script type="text/javascript">
    $().ready(function () {
        $('#<%=pnlDialog.ClientID%>').dialog({
            autoOpen: false,
            height: 270,
            width: 570,
            modal: true
        });
    });
    $(document).on("click", '#<%=btnApriPopup.ClientID%>', function () {
        $('#<%=pnlDialog.ClientID%>').dialog("open");
        return false;
    });
</script>

e il markup di riferimento:

<asp:Button ID="btnStampaConNote" runat="server" Text="Stampa" />
<asp:Panel runat="server" ID="pnlDialog" title="Annotazioni">
[...]
    <asp:Button ID="btnOk" runat="server" Text="Ok" OnClick="btnOk_Click" />
    <asp:Button ID="btnAnnulla" runat="server" Text="Annulla" OnClick="btnAnnulla_Click" />
</asp:Panel>

In questo caso, tutto ciò che è all’interno del pannello pnlDialog non scatenerà postback in quanto jQuery si farà carico di wrappare il div (panel) contenente il dialog e lo spostera’ alla fine del markup, appena prima di </Body>, quindi all’esterno del Form (l’unico Form) della pagina ASP.Net. In questo modo ASP.Net non sarà più in grado di gestire gli eventi ed i postback.

Per ovviare a questo inconveniente bisogna “forzare” lo spostamento del dialog all’interno del Form ASP.Net e lo si puo’ fare in questo modo:

<script type="text/javascript">
    $().ready(function () {
        var dlg = $('#<%=pnlDialog.ClientID%>').dialog({
            autoOpen: false,
            height: 270,
            width: 570,
            modal: true
        });
        dlg.parent().appendTo(jQuery("form:first"));
    });
    $(document).on("click", '#<%=btnApriPopup.ClientID%>', function () {
        $('#<%=pnlDialog.ClientID%>').dialog("open");
        return false;
    });
</script>

Con l’istruzione dlg.parent().appendTo(jQuery("form:first")); si specifica di agganciare il dialog al primo (nonche’ unico in ASP.Net) form della pagina

Google Earth lento nel caricare le immagini di Panoramio 

Sunday, October 23, 2011 11:12:48 PM

Da un po’ succedeva che Google Earth fosse lentissimo nel caricare le immagini da Panoramio (rimaneva freezato per 30-40 secondi prima di visualizzarle). Da qualche ricerca su internet ho trovato la soluzione: togliere la spunta di “Automatically detect settings” dai Lan Settings nelle Internet Options (Control Panel – Internet Options – Connections tab - Lan Settings)

InternetSettings

Mmm... interessante 

Monday, May 09, 2011 11:34:00 PM

IE9 colpisce ancora… dal forum di Lenovo!

IE9StrikesAgain

Installazione Android SDK e messaggio JDK Not Found 

Thursday, May 05, 2011 12:39:15 AM

Spero possa essere a qualcun’altro, prima di perdere tempo con uno stupido bug…
In fase di installazione dell’Android SDK (r10) su sistema Win7 64 bit, viene mostrato questo messaggio:

Java SE Development Kit (JDK) not found

jdknotfound

 

La soluzione, apparentemente stupida ma funzionante… Premere Back e di nuovo Next!!

Cosiderazioni varie MVC3-JQuery-NHibernate3 

Sunday, April 17, 2011 11:32:00 PM

Dopo una settimana passata a stretto contatto con queste tecnologie posso trarre le prime considerazioni a caldo. Senza tanti giri di parole posso dire che:
NHibernate 3 è un bel passo indietro. Sembra una gran accozzaglia di roba buttata li a caso…  QueryOver è un PASTICCIO… a parte che l’unica cosa di cui non si sentiva la mancanza in NH era un ulteriore modo di fare query, dopo Native SQL, HQL, Criteria e Linq2NH, mancava proprio QueryOver… poi, se proprio vogliamo buttarci dentro qualcos’altro, almeno facciamolo che vada!! Tradotto: QueryOver NON sostituisce i Criteria, non permette di tipizzarli in toto, dato che appena si esce dalla banalità (query un po’ più complesse della media) si deve ricorrere ad un bel “GetUnderlyingCriteria” e ricominciare a scrivere Criteria non tipizzati… quindi, ciao, ciao al motivo per cui è stato introdotto QueryOver. Poi, o siamo rimbecilliti in due (tutto è possibile) oppure ci serve proprio qualcuno che ci spieghi come fare un banalissimo Count che non venga tradotto come “Select […] From Table” e poi fatto il count degli elementi già fetchati, ma direttamente con un “Select Count([…]) From Table”… sembra che con QueryOver questo non ci sia! Poi sempre perchè forse le 16 ore di lavoro al giorno ci avevano annebbiato la mente, come si fa a far comparire l’SQL generato, nell’output consolle di VisualStudio dopo aver impostato “ShowSQL = true”??? dov’è finito?? Ok, abbiamo capito che QueryOver è immaturo (diciamo così) quindi abbiamo deciso di tornare a Linq2NH (che ovviamente, anche questo, è stato integrato nel core) …ma, sorpresa, adesso per invocare Linq devi scrivere Session.Query<T> e non più Session.Linq<T>??? Viva la retrocompatibilità! Poco male, è un errore che mi segna il compilatore. Il problema maggiore però è che query che venivano eseguite in NH 2.1.2 + Linq2NH ora non vengono più risolte e l’errore c’è solo a runtime! Morale della favola un FAIL grossissimo!! Sono convinto che, ahimè, per il prossimo progetto sarò costretto ad utilizzare EF4.1!!
Passiamo oltre, MVC3: Finalmente le cose sono fatte come devono essere fatte!! The real web comes back!! Tutto è al posto giusto, per utilizzarlo sei obbligato a sapere come funziona “il web” e cosa sono “GET” e “POST”, non sei costretto a fare salti mortali per correre dietro ad eventi di pagina, i nomi dei campi sono quelli che ti aspetti, le pagine non hanno viewstate… insomma BELLO anche se la curva di apprendimento è un po’ ripida, abituati ad ASP.Net, si deve cambiare un bel po’ mentalità, ma ben venga!!.
Su Razor invece ho qualche dubbio. Bello, fluido, potente …ma forse troppo potente, ti può portare fuori strada e rischi di mettere un sacco di logica nelle view. Questa è un’arma a doppio taglio che rischia di far precipitare MVC nel baratro in cui si era finiti con ASP classico.
Client side programming (JQuery, JScript, Ajax, JSON… e chi più ne ha…) Una sola parola FIKISSIMO!!! Mancano solo uno strumento di debug serio e un intellisense serio, cose che prestissimo arriveranno con JetBrains Resharper 6, strumento indispensabile e che vale tutti i soldi che costa (che oltretutto sono anche pochi) il quale inoltre supporterà anche Razor (intellisense e refactoring), cosa di cui si sente parecchio la mancanza.
Altra nota di merito va ad Artisteer strumento che consente di generare una serie di stili da esportare come css e utilizzarli all’interno delle proprie applicazioni. Bello, semplice e potente, ci ha permesso di creare in poche ore un layout serio e professionale con poco sforzo e senza l’ausilio di un grafico.
Ultima considerazione personale: un grazie immenso a Tiziano che mi ha accompagnato in questa “iniziazione” e spero mi accompagnerà nello sviluppo del progetto, che mi ha ospitato nel suo ufficio e in casa sua facendomi sentire, anche se solo per una settimana, parte di una splendida famiglia e facendomi conoscere persone simpatiche, generose e “vere”.
L’immagine che meglio riassume questa esperienza è rappresentata dai 3 monitor da 24” di Tiziano e dalla sua odiosa tastiera in tedesco!! Smile

IMG_20110412_183919

 

Vita da blogger... 

Wednesday, April 06, 2011 3:30:00 PM

In certi periodi trovare il tempo di bloggare è davvero dura, poco tempo, clienti che pressano, scadenze sempre troppo vicine.
Per questo, ultimamente ho tralasciato un po’ questo blog, oltretutto non riuscendo nemmeno a rispondere a domande lasciate nei commenti… e di questo mi scuso pubblicamente!
Dalla prossima settimana però le cose spero cambieranno (almeno questi sono gli intenti). Inizierà una nuova avventura e finalmente avrò modo di fare un deep-dive dentro a molte interessanti tecnologie (alcune nuove almeno per me) …alcune buzzwords: ASPNet MVC3 & Razor, JScript e JQuery + JQuery UI, Testing, IoC, NHibernate.
Penso che possano uscirne dei bei post da questa full immersion… “Ma hanno già scritto di tutto e di più a riguardo!!” direte!! Beh, certo, però non lo ho scritto io!! :-)
Vorrei ringraziare innanzitutto Mirko, che finanzierà quest’impresa. Senza di lui, soprattutto senza la sua pazienza di aspettare mesi, non avrei forse mai iniziato, un grazie particolare va anche a Tiziano, il co-protagonista dell’impresa che mi prenderà per mano e mi accompagnerà durante il cammino (nonchè ospitarmi nel suo ufficio)!
Quindi… a presto, con un po’ di succulente novità!

 

Errore di "Debug certificate expired" in Eclipse-Android 

Wednesday, March 23, 2011 1:52:00 AM

Nel caso, nel bel mezzo del cammin di vostra vita (leggi: mentre state scrivendo codice per un progetto Android in Eclipse) vi ritrovaste per una selva oscura (leggi: un errore che non sapete da dove sia arrivato) ed Eclipse marca con una X rossa tutti progetti, facendo comparire in consolle un criptico errore del tipo:

Debug certificate expired on 3/23/11 1:35 AM!

Beh, la soluzione è semplice… grazie a Google:

- Eliminare il file debug.keystore nella directory C:\Users\[UtenteCorrente]\.android\debug.keystore (in linux o OSX: ~/.android/debug.keystore)
- Da Eclipse, eseguire il clean dei progetti (Menu: Projects – Clean…)
- Forzare la build dei progetti:
Menu: Project – Build Automatically [Deselezionare se selezionato]
Menu: Project – Build All
Menu: Project – Build Automatically [Riselezionare se precedentemente deselezionato]


Commenti in aspx 

Wednesday, March 02, 2011 2:07:00 PM

Ormai aspx è un po’ che è sul mercato (giusto giusto quella decina d’anni circa) ma ci si casca sempre… I commenti in aspx ( <%--SOME ASPX COMMENT --> ) sono diversi dai commenti in html ( <!-- SOME HTML COMMENTS --> ) e l’aspx NON è html, ma soprattutto I commenti aspx sono “server-side comments”!
La principale fonte di errori in questo senso proviene dai grafici, abituati ad usare commenti html e tools che in automatico, associato a qualche shortcut di commento, inseriscono commenti html. Questo problema è ovviamente bypassato usando tools un po’ più specifici (Visual Studio, Blend…)
Per essere più dettagliati:
La differenza fondamentale è che con i commenti lato client (commenti html) è il browser che si occupa di ignorare il contenuto al loro interno. Il codice e/o i controlli all'interno dei commenti lato client verranno comunque eseguiti sul server o inviati al browser in fase di rendering della pagina. Quindi se si verifica un errore server causato dal codice al loro interno questo influirà sull'esecuzione della pagina stessa.
Con commenti lato server (commenti aspx), il compilatore ASP.NET ignora tutto quanto vi è all'interno del blocco commentato, sia in fase di parsing che di compilazione e ne rimuove completamente il contenuto quando in fase di rendering della pagina. Di conseguenza, gli eventuali errori causati da controlli o codice all’interno del blocco verranno ignorati.

Comunque, per tirare le somme: il codice commentato è codice inutile e come tale non ha ragione di rimanere all’interno del progetto. Citando un amico: “per il codice vecchio c’è il version control, non i commenti” :-)


Android - sapere se è disponibile connettività dati 

Wednesday, March 02, 2011 12:10:00 AM

Un piccolo snippet per conoscere se il device dispone di connettività dati

public static Boolean IsDeviceConnected(Context context) {

// To use this method, add this to manifest
// <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo mobileDataInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

if (mobileDataInfo.getState() != NetworkInfo.State.CONNECTED && wifiInfo.getState() != NetworkInfo.State.CONNECTED) {
return false;
}

return true;
}

 

Report RDLC su server di produzione 

Monday, February 28, 2011 12:44:00 PM

Facendo il deploy di un’applicazione che usa report RDLC sul server si verificava questo errore

An unexpected error occurred while compiling expressions. Native compiler return value: ‘[BC2001] file 'C:\WINDOWS\TEMP\-siahlen.0.vb' could not be found’.

ovviamente sulla macchina di sviluppo funzionava tutto e addirittura sulla macchina di produzione, alla versione precedente, funzionava correttamente.
Il problema è dovuto (sembra) all’utilizzo di immagini embedded nel report (tipo il logo dell’intestazione) che richiedono per chissà quale arcano motivo, che il report venga salvato su disco. Ovviamente, come qualsiasi buon programmatore sa, l’utente IIS non ha proprio tutti I diritti necessari per scrivere in cartelle di sistema, quindi quale miglior luogo per il salvataggio temporaneo se non C:\Windows\Temp!! :-)
Sta di fatto che la soluzione (sembra L’UNICA SOLUZIONE POSSIBILE) è di assegnare i diritti all’utente dell’app pool di IIS sia di lettura che di scrittura alla cartella in questione.


Page 1 of 8 1 2 3 4 5 6 7 8 > >>
Copyright © Luca Cavicchioli

Site Map | Printable View | © 2008 - 2012 Luca Cavicchioli - P.IVA: IT-02770040364 | Powered by mojoPortal | HTML 5 | CSS | Design by styleshout