Alkampfer's Place

Il blog di Gian Maria Ricci
posts - 659, comments - 871, trackbacks - 80

My Links

News

Gian Maria Ricci Mvp Logo CCSVI in Multiple Sclerosis

English Blog

Tag Cloud

Article Categories

Archives

Post Categories

Image Galleries

I miei siti

Siti utili

Che bello Nhibernate

prima di tutto tengo a precisare che non mi paga Janky per fare questo post :D. Oggi mi arriva una chiamata dal funzionale perchè il cliente vuole una modifica su una pagina web. La pagina in questione mostra una lista di alert presenti a sistema, la modifica consiste nella possibilità di rendere attivi o meno gli alert tramite una combobox presente nella lista. Mi accingo quindi a fare le modifiche

  • Non devo aggiungere nulla al database perchè ho una colonna status intera che gestisco con un enum di tipo Flag
  • 10 secondi per aggiungere una proprietà alla classe (con gli snippet si fa subito) che internamente utilizza la proprietà status

A questo punto vado nella pagina ed inserisco una nuova colonna nella datagrid

<asp:TemplateField> <ItemTemplate> <asp:CheckBox ID="cbEnabled" runat="server" Checked='<%# IsChecked(Eval("Enabled")) %>' autopostback="true" OnCheckedChanged="EnabledItemTemplateCheckChange" /> ItemTemplate> asp:TemplateField>

A questo punto ho bisogno di due funzioni nel code behind, una che gestisce il checked durante il binding chiamata IsChecked() e l'altra che gestisce l'evento di CheckedChanged

Public Function IsChecked(ByVal Enabled As Object) As String If (DirectCast(Enabled, Boolean)) Then Return "true" Else Return "false" End If End Function
Public Sub EnabledItemTemplateCheckChange(ByVal sender As Object, ByVal e As EventArgs) Dim chb As CheckBox = DirectCast(sender, CheckBox) Dim dgrow As GridViewRow = DirectCast(chb.NamingContainer, GridViewRow) Dim uow As IUnitOfWork = DataAccessProviderFactory.GetConversationUnitOfWork() Dim al As Alert = uow.GetReferenceByKey(Of Alert)(gwAlerts.DataKeys(dgrow.RowIndex).Value) al.Enabled = chb.Checked End Sub

Particolarmente piacevole è la seconda, grazie ad un modulo http che gestisce il pattern di session per request di nhibernate l'unica cosa che debbo fare è recuperare la riga che contiene la checkbox che è stata cambiata, poi recupero dal database l'oggetto alert grazie alla proprietà GetReferenceByKey ed infine cambio il valore della proprietà enabled. Non devo gestire null'altro perchè al termine della richiesta http il modulo effettua il commit della transazione ed è tutto ok.

Tempo totale 10 minuti in tutto, a questo punto ripenso a quanto lavoro ho risparmiato rispetto ad utilizzare dataset tipizzati o altri pattern. :D

Alk.

Print | posted on martedì 3 aprile 2007 21:15 | Filed Under [ .NET ]

Feedback

Gravatar

# re: Che bello Nhibernate

Confermo...non ti ho dato una lira...:-)
04/04/2007 01:34 | Giancarlo Sudano
Gravatar

# re: Che bello Nhibernate

Ti farò pagare in cinghiale :D, scherzo hhahaha

Alk.
04/04/2007 12:51 | Gian Maria
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET