Blog di Bruno Fortunato

.Net Developer (and many more) - Direct3D Lover
There are 10 kind of person in the world, who understand binary code and who not!
ASP.NET MVC + Entity Framework sull'hosting base Aruba

Ciao a tutti.

Quando mai su aruba ha funzionato tutto al primo colpo?
A me sinceramente non è mai successo.
L'mvc non funziona al primo colpo.
L'EF non fa eccezione.

In pochi e semplici passi, però, è possibile far funzionare entrambi i framework.

Nel caso dell'MVC il problema è che utilizzando un indirizzo tipo http://sitoaruba.it/Home/Index, il motore di asp.net nn viene richiamato e nessuna pagina viene trovata. Difatti il server restituisce un 404.
Questo si risolve molto facilmente aggiungendo l'estensione .aspx nell'espressione regolare del routing in Global.asax

           routes.MapRoute(
                "Default",
                "{controller}/{action}.aspx",                     
                new { controller = "Home", action = "Index"}

            );

In questo modo utilizzando l'indirizzo http://sitoaruba.it/Home/Index.aspx, tutto funzionerà correttamente.

 

Se invece provate ad utilizzare l'EntityFramwork, riceverete il seguente errore: Invalid object name: [dbo].[NomeTabella].
Il problema è semplicissimo. Su aruba il db owner non è dbo, ma un qualcosa tipo 'MsSql12345' e quindi bisogna cambiarlo.

Si risolve in 2 semplici passi.
1: Nell' entity data model designer, impostare la proprietà 'Metadata Artifacts Processing' su 'Copy To Output Directory'.
2: Dopo aver cambiato la proprietà, compiliamo e in 'Bin' troveremo un file con estensione .ssdl. E' in formato XML. Apriamolo e sostituiamo a dbo il nome utente sql di aruba.

 

Ora tutto dovrebbe funzionare a dovere!

Un virtual tour in 3D Dinamico!
Ciao a tutti!
A tempo perso ho realizzato un specie di virtual tour configurabile dinamicamente da una pagina scritta in asp.net 2.0 / atlas.
Il virtual tour è stato realizzato in un'applet in Java3D.

Mi piacerebbe sapere cosa ne pensate!

potete visionarlo [qui]

preview:

Grazie!
Posted: Jul 10 2006, 11:29 AM by DaViL | with no comments
Filed under: , ,
Introduzione alla grafica 3d con WPF
Sono sempre stato appassionato di grafica 3D ed onestamente quando ho visto le potenzialità di Windows Presentation Foundation in questo ambito (ma non solo) non ho potuto fare a meno di addentrarmi nel merito.

Ecco quindi il mio secondo articolo

Buona lettura

Bruno Fortunato
Relazioni tra ComboBox in un DataGridView
Ciao a tutti.

Qualche giorno fa mi sono trovato di fronte ad un piccolo problema, e siccome dopo la cena di ieri sera con i miei "colleghi di community" sono di buon umore, ho deciso di postare qui la soluzione adottata sperando possa essere utile a qualcuno!

In pratica, mi sono trovato di fronte a 2 ComboBox in un GridView i quali dipendevano l'un dall'altro da una relazione in un database.

Per intenderci... una tipica relazione come potrebbe essere quella delle regioni di italia con le rispettive province.

Bene...

Diamo per scontata la presenza di un dataset contentente le tabelle (regioni, province), 2 BindingSource (bsRegioni, bsProvince) che puntano alle suddette tabelle e quindi, un DataGridView (gridView) con 2 DataGridViewComboBoxColumn, cbRegioni con data source bsRegioni e cbProvince, ovviamente, con bsProvince.

Nella tabella contenente le province ci saranno tutte le province d'italia e ci sara' un altro campo ( id_regione ) che appunto legherà la provincia alla regione.

Quello di cui noi abbiamo bisogno è quindi filtrare le province in cbProvince in base alla selezione in cbRegioni.

Per far cio' abbiamo bisogno di un altro BindingSource, sempre legato alla tabella Province, sul quale applicare i filtri tramite la proprietà Filter.

In pratica avremo 3 binding source:

BindingSource bsRegioni = new BindingSource(dataSet, "regioni");
BindingSource bsProvince = new BindingSource(dataSet, "province");
BindingSource bsProvinceFiltrate = new BindingSource(dataSet, "province");


A questo punto dobbiamo intercettare l'evento CellBeginEdit del gridView nel quale intercettare la cella contenente la provincia ed applicare il filtro.

private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
        {
            if (e.ColumnIndex = this.cbProvince.Index) //controllo se sto modificando la cella giusta
            {
                //recupero la cella contenente la regione selezionata
                DataGridViewComboBoxCell cellRegione = (DataGridViewComboBoxCell)dataGridView1[this.cbRegioni.Index, e.RowIndex];

                //recupero la cella contenente la provincia e che sto modificando
                DataGridViewComboBoxCell cellProvincia = (DataGridViewComboBoxCell)dataGridView1[e.ColumnIndex, e.RowIndex];

                //applico il filtro al bindingSource
                this.bsProvinceFiltrate.Filter = String.Format("id_regione = {0}", cellRegione.Value);

                //imposto il datasource corretto alla cella provincia
                cellProvincia.DataSource = this.bsProvinceFiltrate;
            }
        }


Benissimo. Ora la cella dovrebbe essere filtrata.

Per evitare errori di esecuzione è necessario, alla fine della modifica della provincia, reimpostare il bindingSource originale.
Intercettiamo quindi l'evento CellEndEdit del gridView e riportiamo tutto alla "normalita"

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex = this.cbProvince.Index) //controllo se sto modificando la cella giusta
            {
                //recupero la cella contenente la provincia e che sto modificando
                DataGridViewComboBoxCell cellProvincia = (DataGridViewComboBoxCell)dataGridView1[e.ColumnIndex, e.RowIndex];

                //imposto il datasource originale alla cella provincia
                cellProvincia.DataSource = this.bsProvince;
            }
        }


E' tutto.

Spero possa essere utile a qualcuno!

Bruno Fortunato
Semplice FadeIn/Slideshow con Atlas
Atlas mette a disposizione una serie di librerie davvero carine con le quali, con poche righe di codice, è possibile ottenere semplici ed interessanti effetti.

E con esse che ho provato a realizzare un semplice slideshow con fadein!

Spero possa esservi utile.

Sorgente con sintassi dichiarativa:

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
   
    <script type="text/javascript">
        var index = 0;
        var images = Array(
            "http://atlas.asp.net/docs/images/logo.gif",
            "http://www.google.it/intl/it_it/images/logo.gif",
            "http://www.dotnetside.org/Themes/default/images/common/title.gif" 
        );
       
        function slider_onTick(sender, eventArgs)
        {
            var image = $object("image");
            var fader = $object("fader");

            fader.stop();
           
            index++;
            if(index>=images.length)
                index=0;
               
            image.set_imageURL(images[index]); 
           
            fader.play();
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <atlas:ScriptManager ID="ScriptManager1" runat="server">
            <Scripts>
                <atlas:ScriptReference ScriptName="AtlasUIGlitz" />
            </Scripts>
        </atlas:ScriptManager>
       
        <h3>Simple SlideShow</h3>
        <img id="image" src="http://atlas.asp.net/docs/images/logo.gif" />
    </form>

    <script type="text/xml-script">
        <page xmlns:script="http://schemas.microsoft.com/xml-script/2005">
            <components>
                <timer id="slider" interval="5000" tick="slider_onTick" enabled="true" />
                <image id="image" />
                <fadeAnimation id="fader" target="image" effect="fadeIn" />
               
                <application>
                    <load>
                        <invokeMethod target="fader" method="play" />
                    </load>
                </application>
            </components>
        </page>
    </script>
</body>
</html>


Sorgente con sintassi programmatica:

<%@ Page Language="C#"  %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
   
    <script type="text/javascript">
        var index = 0;
        var fader;
        var images = Array(
            "http://atlas.asp.net/docs/images/logo.gif",
            "http://www.google.it/intl/it_it/images/logo.gif",
            "http://www.dotnetside.org/Themes/default/images/common/title.gif" 
        );
       
        function pageLoad()
        {
            image = new Sys.UI.Image($("image"));
            image.set_imageURL(images[index]);
            image.initialize();
           
            fader = new Sys.UI.FadeAnimation();
            fader.set_target(image);
            fader.set_effect(Sys.UI.FadeEffect.FadeIn);
            fader.initialize();       
           
            var slider = new Sys.Timer();
            slider.set_enabled(true);
            slider.set_interval(5000);
            slider.tick.add(slider_onTick);
            slider.initialize();
           
            fader.play();
        }
       
        function slider_onTick(sender, eventArgs)
        {
            fader.stop();
           
            index++;
            if(index>=images.length)
                index=0;
               
            image.set_imageURL(images[index]); 
           
            fader.play();
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
        <atlas:ScriptManager ID="ScriptManager1" runat="server">
            <Scripts>
                <atlas:ScriptReference ScriptName="AtlasUIGlitz" />
            </Scripts>
        </atlas:ScriptManager>
        <h3>Simple SlideShow</h3>
        <img id="image" src="http://atlas.asp.net/docs/images/logo.gif" />
    </form>
</body>
</html>


Bruno Fortunato
Posted: May 12 2006, 06:42 PM by DaViL | with no comments
Filed under:
Atlas: Nuova versione del Control ToolKit
Questo Atlas si fa sempre più interessante ed il già "gustoso" Control ToolKit si arricchisce di 4 nuovi controlli!

  • Always Visible: Posiziona un controllo in un angolo della finestra del broser
  • Drop Shadow: Aggiunge un ombra a qualsiasi controllo della pagina
  • Modal Popup: Visualizza una finestra modale
  • Rounded Corners: Arrotonda gli angoli di un controllo
A me è particolarmente piaciuta la finestra modale, forse perchè avevo fatto poc'anzi una cosa simile per un mio progetto!
Interessante (per me) anche l'Always Visible in quanto utilizza l'oggetto Sys.UI.NumberAnimation() di AtlasUIGlitz.js, una libreria davvero poco documentata!

Per ulteriori informazioni, clicca qui


Posted: May 12 2006, 12:00 PM by DaViL | with 1 comment(s)
Filed under:
[OT] Un programmatore deve essere versatile...
Ebbene si, è quel che penso!
Sono le 17, monto al lavoro alle 15.30 e sono appena arrivato al computer!

Sono stato con paletta e scopa a riempire secchi di acqua perchè qui ha piovuto ed è tutto allagato :)

Un programmatore DEVE essere versatile :P
Posted: May 11 2006, 04:59 PM by DaViL | with no comments
Filed under:
Un articolo sul pattern Model-View-Controller
Quando ci si trova di fronte ad un applicazione piuttosto complessa, è di fondamentale importanza tenere presente alcuni aspetti fondamentali tra cui la facilità di manutenzione del codice ed il riutilizzo dello stesso.
Da non sottovalutare nemmeno la separazione fra i componenti che regolano le funzioni di business ed i componenti che implementano la logica di presentazione.

continua....

ps: Il mio primo articolo :P
AJAX: Riscoprire JavaScript
Inutile negarlo!
AJAX è molto di moda ultimamente.
Come è inutile stare qui a scrivere come funziona questa "tecnologia".
Basta usare Google per notare quante parole sono state spese a riguardo.

XmlHttpRequest non è certo un oggetto nuovo, ma sta di fatto che è grazie a lui se tra qualche tempo vedremo nelle nostre applicazioni web funzionalità da desktop, quali drag & drop e simili.

Inutile dire che le maggiori (e non) case produttrici si sono messe gia al lavoro su questa tecnologia, fornendo framework per la facile implementazioni di tali funzionalità.

Come Microsoft ad esempio, con Atlas.
Atlas si sposa perfettamente con ASP.NET consentendo funzionalità di partial rendering, drag drop, autocomplete con una facilità estrema.

Atlas però è giunto alla CTP di Aprile. La documentazione non è ancora completa e poi, diciamoci la verità... noi siamo appassionati e vogliamo capire come funziona, non semplicemente utilizzare prodotti gia fatti!

Ecco perche ho realizzato un piccolo framework mio, che consente (per il momento) di avere funzionalità di drag & drop e di resize scrivendo poche righe di codice!

Clicca qui per vedere un esempio di Drag&Drop
Clicca qui per vedere un esempio di Resize
Clicca qui per vedere un tentativo di WEB Desktop a scopo didattico (nonchè il mio sito web)

Non dimenticate di vedere il codice sorgente.

In allegato versioni scaricabili degli esempi
Posted: May 10 2006, 09:39 AM by DaViL | with 1 comment(s)
Filed under: