Domanda

Sto creando un file-browser in ASP.Net ma ho riscontrato un problema che credo si riferisca al cablaggio degli eventi sui controlli dinamici. Spiegherò cosa fa il mio codice qui:

Quando la mia pagina viene caricata (OnLoad) chiamo un metodo (createStuff ()) che crea un numero di pulsanti di collegamento (che rappresentano le cartelle in una directory corrente) che sono collegati a un evento che modifica la directory corrente in quella associata con il pulsante link.

Poiché un evento linkbutton-click viene generato dopo la chiamata di OnLoad (e quindi la directory corrente viene modificata per la prima volta dopo il caricamento), i pulsanti di collegamento non si aggiornano per riflettere la nuova directory corrente (vengono creati prima della modifica della directory corrente dall'evento click). Perciò chiamo anche createStuff () in OnLoadComplete con conseguente aggiornamento dei linkbuttons e riflessione delle cartelle nella nuova directory corrente.

TUTTAVIA (e questo è il mio problema) sembra che il collegamento di eventi (Click + = new EventHandler (changeDirectory)) che faccio in createStuff () non funzioni davvero quando il metodo viene chiamato in OnLoadComplete (OnLoadComplete viene chiamato dopo è stato attivato un evento linkbutton-click). Il risultato è che mentre la proprietà text dei pulsanti di collegamento riflette le cartelle nella nuova directory facendo clic sui pulsanti di collegamento non si attiva l'evento.

Come posso risolvere questo problema? Ho provato a ricollegare gli eventi sui LinkButtons in OnLoad ma lo stesso risultato.

Grazie in anticipo

Simon, Danimarca

È stato utile?

Soluzione

Imposta la proprietà ID di LinkButton in modo coerente.

Due cause comuni di questo comportamento sono (1) gestori di eventi mancanti e (2) proprietà ID mancanti. Dal momento che sei sicuro che il gestore dell'evento è stato collegato durante OnLoad , probabilmente il responsabile dell'errore è la mancanza di proprietà ID.

Quando un utente fa clic sul tuo LinkButton sul client, un PostBack viene inviato al server che nomina LinkButton per ID. Se non stai assicurando che il tuo controllo abbia lo stesso ID tra PostBack, il gestore dell'evento potrebbe non essere aumentato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top