Popolamento gridview

mercoledì 13 febbraio 2008 - 12.14

squilibrium Profilo | Junior Member

Ciao a tutti

io ho una gridview che viene popolata attraverso un objectdatasource.

A volte capita che però il database dal quale vengono recuperati i dati sia off line e quindi il popolamento va in errore.

Come è possibile gestire l'errore che si presenta in questo caso?

L'unico modo che ho trovato è quello di gestire l'evento page_error ed analizzare il Server.GetLastError() mentre vorrei intercettare l'errore mentre viene fatto il bind dei dati.

Qualche idea?

Grazie

freeteo Profilo | Guru

ciao,
non ho capito come mai hai bindato un objectDataSource, e poi parli di "database"
Tipicamente quando usi un objectdatasource significa che chiami un metodo di una classe tua che ti torna una Collection Tipizzata, o cmq un DataTable/DataSet, ma il fatto è che passi per qualche metodo tuo.

Se invece vai dritto su un database (access/sql e ultimamente Linq anche se non è un db) alora puoi usare dei provider gia' pronti, che sanno cosa fare.

Percio' mi verrebbe da pensare che passando per un ObjectDataSource, ti puoi tutelare tu da codice tuo, nel metodo chiamato, a controllare la connessione, ed eventualmente tornare qualcosa di vuoto, o qualcos'altro...o cmq gestendo un redirect da qualche altra parte...insomma quello che preferisci tu.


ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

squilibrium Profilo | Junior Member

Effettivamente non sono stato molto chiaro...

Ci provo ora.

La mia applicazione è sviluppata in 3 livelli.
livello dati
livello businness
livello presentation

E' un'architettura che utilizzo ormai da diverso tempo ed è piuttosto diffusa.

Quando mi si genera un eccezione sul livello dati (come per esempio l'apertura di una connessione al DB), io la sollevo fino al livello di presentation dove poi gestisco l'errore con una pagina personalizzata.

In dot.net 1.1 effettuavo sempre il databind delle griglie da codice e lo gestivo in un blocco try catch. Di conseguenza nel caso si verificasse un errore di connessione al database, veniva sollevata l'eccezione e risaliva i 3 livelli fino al suddetto blocco try catch.

Con dot.net 2.0 invece, il bind della gridview, lo effettuo tramite objectdatasource (ovvero non scrivo codice). Se però si genera un eccezione, devo poterla intercettare da codice e devo intercettarla al livello di presentation.

In sintesi dovrei poter intercettare un qualsiasi errore si verifichi quando viene effettuato il bind di una gridview.

Spero di essere stato un pò più chiaro.




freeteo Profilo | Guru

>Effettivamente non sono stato molto chiaro...
>
>Ci provo ora.
>
>La mia applicazione è sviluppata in 3 livelli.
>livello dati
>livello businness
>livello presentation
>
>E' un'architettura che utilizzo ormai da diverso tempo ed è piuttosto
>diffusa.
si e salvo casi particolari direi che è anche la migliore


>In sintesi dovrei poter intercettare un qualsiasi errore si verifichi
>quando viene effettuato il bind di una gridview.
ci sono i vari eventi onDataBinding etc...pero' io penserei a fare in modo di testarlo magari sul load della pagina, invocando il select()...effettivamente è una cosa che non ho ancora approfondito, quindi non ho una soluzione vincente...


ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

squilibrium Profilo | Junior Member

Sarebbe utile avere un evento della griglia del tipo OnBindError

Comunque per il momento ho "risolto" gestendo l'errore nel page_error e utilizzando la funzione Server.GetLastError()

ciao e grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5