Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1909, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

LightSwitch: chiedere conferma all'utente per eliminare record

All'interno delle applicazioni LightSwitch è possibile eseguire operazioni di aggiunta, rimozione e modifica di dati indipendentemente dal tipo di screen che utilizziamo (eccezion fatta per quelli a sola lettura, come i Search Screen).

Tuttavia, l'eliminazione di elementi tramite il tasto Canc o l'apposito pulsante sulla toolbar non richiede la conferma dell'utente. In realtà questo ha senso ed è comunque corretto, nel senso che l'azione di rimozione si limita ad eliminare l'elemento dall'entity set associato alla view ma non dal database finché non si salvano i dati e basta fare Refresh per tornare allo stato originario. Se però vogliamo richiedere conferma all'utente prima di procedere all'eliminazione, possiamo farlo scrivendo qualche riga di codice (eh già, in LightSwitch si scrive codice ).

Supponiamo di avere una Editable Grid, quindi una griglia che mostra dei dati e ne consente la modifica. Tale screen predefinito offre una toolbar predefinita che include il pulsante di eliminazione, come mostrato nella seguente figura:

Possiamo tranquillamente fare doppio click sul pulsante Delete, per gestirne il metodo Execute che viene invocato quando l'utente fa click sul pulsante. Nell'applicazione di prova che uso per questo post ho una collection chiamata Products, che contiene, ovviamente, tante istanze di un'entità chiamata Product. Il codice che si può scrivere è il seguente:

        Private Sub gridDeleteSelected_Execute()
            'Ottiene l'istanza del prodotto selezionato nella griglia
            Dim prod As Product = Me.Products.SelectedItem
 
            'Assume che l'Access Control sia attivato (autenticazione) e controlla i permessi per l'utente
            If Me.Products.CanDelete Then
                'se ce li ha, chiede conferma per l'eliminazione
                Dim result As System.Windows.MessageBoxResult = _
                    Me.ShowMessageBox("Vuoi davvero rimuovere il prodotto " + _
                                      prod.ProductName + "?""Eliminazione",
                                      MessageBoxOption.YesNo)
                Select Case result
                    'Se si, invoca il metodo di istanza Delete sull'entità
                    Case Is = Windows.MessageBoxResult.Yes
                        prod.Delete()
                        Exit Sub
                        'altrimenti niente
                    Case Else
                        Exit Sub
                End Select
            Else
                'Se l'utente non ha i permessi,
                'mostra un warning
                Me.ShowMessageBox("Non hai permessi sufficienti",
                                  "Security warning",
                                  MessageBoxOption.Ok)
            End If
        End Sub

Nel caso in cui vogliate provare senza utilizzare regole di autenticazione e di Access Control, è sufficiente rimuovere il blocco If..End If che controlla i permessi e lasciare il resto del codice. Di interessante c'è da notare la chiamata a un metodo che si chiama ShowMessageBox, che in LightSwitch è un metodo extension che appartiene agli oggetti di tipo IScreenObject, ossia gli screen e si comporta un po' come le MessageBox che conosciamo. Altra cosa interessante è il fatto che le entità espongano metodi di istanza per operazioni CRUD, come Delete.

C'è da notare che il codice non salva comunque le modifiche, attende il click su Save dell'utente. Se invece volete forzare il salvataggio via codice, si scrive un'invocazione esplicita al seguente metodo:

            Me.DataWorkspace.ApplicationData.SaveChanges()

possibilmente incapsulata in un blocco Try..Catch   Vi ricordo che ApplicationData è la classe che espone i dati del database intrinseco dell'applicazione, ma se usate altre fonti dati avrete classi con medesimi compiti ma con nome diverso (es. NorthwindData).

Alessandro

Print | posted on giovedì 7 aprile 2011 16:36 | Filed Under [ Visual Basic Visual Studio LightSwitch ]

Powered by:
Powered By Subtext Powered By ASP.NET