Come aggiornare un repeater di utenti, se viene premuto un tasto rifer...

sabato 03 giugno 2006 - 19.36

event Profilo | Newbie

Ho due pagine: Approvazione.aspx e Utente.ascx.

Nella pagina Approvazione ho un Repeater di utenti, presi dalla pagina: Utente.ascx.
Nella pagina Utente ho una FormView contenente 3 bottoni riferiti all'utente stesso.
Quando viene premuto il bottone all'utente "X" viene cambiato un attributo che lo farebbe "uscire" dal repeater(che si trova nella pagina di Approvazione)

Ora... quando utilizzo un elemento nella stessa pagina, che mi fa cambiare il Repeater, mi limito a scrivere: nell'evento generato da quell'elemento allora Repeater1.DataBind().
Ma quando devo utilizzare un elemento in un' altra pagina che mi fa cambiare il Repeater, non posso:
- scrivere Repeater1.DataBind() nel metodo "bottone_click" che si trova in utente xchè Repeater1 non esiste in quella pagina(Utente.ascx),
- scrivere che FormView1 scaturisce un evento xchè non esiste nella pagina del Repeater(Approvazione.aspx).

Quindi ho esaurito le idee
Mi ri-rivolgo a voi visto che siete stati così gentili e competenti, grazie ancora.

freeteo Profilo | Guru

ciao,
ti consiglio 1 metodo che uso spesso ed a mio avviso è anche "pofessionale", ovvero quello di usare delle proprieta' o dei metodi
Basta che nel codice del tuo controllo scriva 1 metodo public (che quindi sia accessibile dall'esterno) che da intellisense della pagine (contenitore del controllo) possa accedere.
Ad esempio:

-------controllo
...
public void AggiornaDati()
{
repeater1.dataBind()
...


-------pagina aspx
...
<uc1:utente id="miocontrollo" runat="server" />
...

------codice della pagina aspx
miocontrollo.AggiornaDati()


proprio come 1a classe normale,cosa che infondo è il tuo controllo, anche se web è pur sempre 1 controllo
Puoi anche usare il FindControl ma cosi' è piu "pulito"...
ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo

event Profilo | Newbie

Allora, se per controllo intendi Utente.ascx allora ti dico che putroppo non posso creare un metodo in cui ci sia dentro Repeater1.DataBind() perchè mi dice che Repeater non sa cos'è...

Se invece intendevi che devo mettere il metodo AggiornaDati dentro la pagina aspx, lo posso fare, ma a questo punto non mi funziona Utente.AggiornaDati() xchè mi dice che Utente non sa cos'e'...
(calcolando che ho <uc1:Utente ID="Utente" ...> e che scrivo Utente.AggiornaDati() nel metodo: Repeater1_DataBinding() dentro <script>...)

O forse non ho capito bene io la tecnica
Sta sempre di fatto il problema che in Utente.ascx non posso mettere la scritta "Repeater1" mentre in Approvazione.aspx non posso mettere riferimenti o informazioni sui metodi dei bottoni di Utente.ascx.
Quindi non riesco a legarli, cioè non riesco a farli leggere a vicenda... Approvazione non sa nulla di Utente e Utente non sa nulla di Approvazione...

freeteo Profilo | Guru

ciao,
hai provato allora a controllare come si chiama la classe della tua pagina?
Perche con la tecnica che ti dicevo potresti usare 1 metodo solo che cmq se sei in 1altra pagina e devi aggiornare dati che non sono li, non puoi farlo lato server, anche perche se lui lo fa noin è che ti cambia sotto il naso la pagina, inquanto lui sta eseguendo codice sul server e non riuscira' mai ad agire sul tuo browse.
Se vuoi fare questo, devi usare javascript che ti faccia il refresh della pagina origine.
ad esempo, se apri 1a finestra del browser in popup e vuoi che alla pressione del tasto aggiorni 1altra, metti 1link classico in html e aggiungi al metodo onclick (ti ricordo che è lato client e non lato server quindi non è codice .net) cosi:

onclick="self.opener.location.reload();"

questo dice al tuo browser di aggiornare la pagina che l'ha chiamata....è questo che ti serviva forse?
ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo

event Profilo | Newbie

Guarda, già ho difficoltà con visual basic e con .net che avventurarmi su javascript mi sembra una pazzia!

Ora ti propongo quello che ho fatto via codice, magari ti aiuta a capire ( o aiuta me ):

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

La parte di codice che vedi l'ho azzardata io, un pò sotto tuoi suggerimenti passati e un pò a caso... La parte interessata è quella che ho commentato (con l'apicetto '). Il resto è ok.

Questo codice fa parte della pagina Utente.ascx nella sezione <script runat=server>...
Dove il mio scopo è sempre quello di fare un databind del Repeater che invece si trova nella pagina Approvazione.aspx (ti ricordo inoltre che il repeater RIPETE appunto Utenti presi da Utente.ascx)

Inoltre questo codice si riferisce ad un bottone che si trova nella FormView dell'utente e si chiama "ApprovaSingolo".

Grazie ancora e scusa il disturbo... :/

freeteo Profilo | Guru

ciao,
ti posto 1esempio che fa quello che intendi tu (a meno di non aver capito male)
tieni presente pero' che quello che fa non lo puoi fare lato server (quindi con codice c# - vb) ma lo puoi fare fare al tuo browser, quindi con javascript.
L'esempio è in c#, cmq vb è praticamente uguale...
ciao.

Matteo Raumer
MCAD ... .net addicted :-)
http://blogs.dotnethell.it/freeteo
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5