Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
AJAX: datagrid?
giovedì 20 marzo 2008 - 11.01
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
volperubbia
Profilo
| Senior Member
375
messaggi | Data Invio:
gio 20 mar 2008 - 11:01
Ciao a tutti,
è da pochi giorni che "gioco" con ajax (sono un novizio quindi), ho già provato alcuni controllini presenti nell'ASP.NET AJAX Control Toolkit. Da dove partire ora per realizzare una datagrid / una gridview con ajax?
Vorrei, ad esempio, gestire l'aggiornamento di un "record" riducendo i postback della pagina ...
Qualche idea?
Davide
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
gio 20 mar 2008 - 14:56
Ciao,
di sicuro il metodo più semplice è inserire un UpdatePanel che contenga la datagrid o la gridview. Questo però non vuol dire che sia il più efficiente. Potrebbe essere un buon compromesso nel caso in cui usi la paginazione e visualizzi poche righe, quindi hai pochi dati da gestire durante il postback e dal punto di vista dell'utente la fluidità del sito rimane abbastanza buona (poi dipende anche se stiamo parlando di un sito internet o di una intranet).
Altrimenti alcune alternative potrebbero essere quelle di sfruttare il framework client che fornisce la libreria Ajax e quindi creare dinamicamente i controlli di inserimento. Poi potresti effettuare gli aggiornamenti sfruttando delle chiamate a webservice, però i tempi di questa soluzione si allungano e non di poco.
volperubbia
Profilo
| Senior Member
375
messaggi | Data Invio:
mar 25 mar 2008 - 15:11
Ciao, grazie ... sto facendo un po' di prove. Per esempio ...
<asp:ScriptManager ID="ScriptManager" runat="server" EnablePageMethods="True" EnableScriptLocalization="True" EnableScriptGlobalization="True"></asp:ScriptManager>
<asp:LinkButton ID="lnkBtnGo" runat="server" EnableViewState="False">Prova</asp:LinkButton>
<asp:UpdatePanel ID="updPanel" runat="server">
<ContentTemplate>
<asp:datagrid id="dg" runat="server" CellPadding="0">
<AlternatingItemStyle CssClass="DataGridAltItem"></AlternatingItemStyle>
<ItemStyle CssClass="DataGridItem"></ItemStyle>
<HeaderStyle CssClass="DataGridHeader" Wrap="False"></HeaderStyle>
<FooterStyle CssClass="DataGridHeader"></FooterStyle>
</asp:datagrid>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="lnkBtnGo" />
</Triggers>
</asp:UpdatePanel>
Verrei cliccare su lnkBtnGo e quindi richiamare lnkBtnGo_Click lato server per popolare la grid, ma senza fare il postback di tutta la pagina.
Private Sub lnkBtnGo_Click
dg.datasource = ...
dg.databind
End Sub
Come fare?
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
mar 25 mar 2008 - 16:04
> <Triggers>
><asp:AsyncPostBackTrigger />
> </Triggers>
Hai già provato a specificare in modo esplicito il nome dell'evento?
<asp:AsyncPostBackTrigger ControlID="lnkBtnGo" EventName="Click" />
volperubbia
Profilo
| Senior Member
375
messaggi | Data Invio:
mar 25 mar 2008 - 16:25
Si già provato
... ma senza successo.
Sto provando ora a cercare qualche esempio in rete su come gestire datagrid o gridview con ajax ... ancora nulla però.
Davide
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
mar 25 mar 2008 - 16:46
Per caso Internet Explorer ti segnala degli errori javascript nella barra di stato in basso a sinistra? Potrebbe essere un errore dovuto ad un'errata configurazione del webconfig.
Io ho fatto una rapida prova e il codice che hai postato funziona correttamente
volperubbia
Profilo
| Senior Member
375
messaggi | Data Invio:
mer 26 mar 2008 - 11:23
601_Prova AJAX.zip
Ciao e grazie ancora per la pazienza ...
Hai ragione, è probabile manchi qualche impostazione. In allegato puoi vedere quello che ho fatto. Funziona, però non entra in modalità aiax. Infatti al click su lnkBtnGo passa sempre prima in Page_Load e quindi in lnkBtnGo_Click (che poi è il classico ciclo asp.net). Cosa potrebbe mancare?
Davide
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
mer 26 mar 2008 - 14:37
603_ProvaAjax.zip
Ti confermo che funziona correttamente. Ho tolto solo una paio di referenze nel webconfig di cui non avevo le dll.
Comunque ti allego il progetto di test così puoi verificare
volperubbia
Profilo
| Senior Member
375
messaggi | Data Invio:
mer 26 mar 2008 - 15:22
Mistero. Ho riprovato con lo stesso prj che mi hai mandato ... ahimè niente da fare.
Se metto un break point su Page_Load o Page_PreRender e clicco sul Button, la pagina fa il ciclo completo. Io mi aspetterei di non passare dal Page_Load e dal Page_PreRender ... p.s.: di ajax ne so ancora poco ... lavori in corso.
Grazie comunque
... appena risolvo (spero) ti dico.
Davide
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
mer 26 mar 2008 - 17:45
Ciao,
per quanto riguarda gli eventi non cambia nulla, vengono richiamati nello stesso ordine di prima. L'updatePanel si occupa semplicemente di renderizzare la porzione che gli compete in modo asincrono.
Se ti serve controllare se sei in un post back asincrono puoi verificare da codice la proprietà IsInAsyncPostBack del tuo controllo ScriptManager
volperubbia
Profilo
| Senior Member
375
messaggi | Data Invio:
gio 27 mar 2008 - 10:41
Grazie.
La property IsInAsyncPostBack in effetti è true. Ho inserito nel tag BODY della pagina onload="javascript:alert('Page (Re)Loaded');", tutto ok, l'alert non scatta (a differenza di quanto succederebbe con un classico Button lato server).
Davide
Torna su
Stanze Forum
Elenco Threads
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 !