LoadControl

mercoledì 21 marzo 2012 - 16.04
Tag Elenco Tags  C#  |  .NET 2.0  |  Visual Studio 2005  |  SQL Server 2005

skraus Profilo | Junior Member

Salve a tutti.

Ho un problema con il caricamento dinamico di un controllo ascx. Cerco di spiegarvi brevemente come ho impostato il tutto.

Nella cartella App_Code ho inserito una mia Classe (myCustomPage) di cui vi riporto il codice di seguito:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Dopo di che ho creato la pagina risorse.aspx la quale eredita myCustomPage. In questa pagina ho inserito un formView (formViewRisorsa) nel cui Insert Template ho inserito (come avevo già fatto in altre pagine del medesimo progetto) una div runat="server".

Di seguito vi riporto il contenuto del page Load
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

La pagina viene caricata correttamente, ma il controllo ascx non è presente nella pagina.

Spero di essere riuscito a spiegarmi. Grazie in anticipo per i suggerimenti.
Sk

Gluck74 Profilo | Guru

sei sicuro di aprire il form in insertMode quando controlli la presenza del controllo?
Inoltre, sei sicuro di aggiiungere il controllo nel momento giusto?

La parte di codice che verifica il "CurrentMode" ed inserisce il il controllo, toglila dal Page_Load, e mettila nel Prerender o nel DataBound della form (se esiste)

ciao

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

skraus Profilo | Junior Member

Ok seguendo il tuo consiglio, ossia spostando il controllo sul FormView.CurrentMode all'interno del DataBound funziona. Però all'interno del medesimo progetto ho altre pagine strutturate allo stesso modo (di prima) che non mi danno nessun problema, perchè ?

Mi consigli di modificare anche queste, spostando il controllo sulla proprietà CurrentMode del FormView nel DataBound e di conseguenza il LoadControl ?

Ancora grazie.
Sk

Gluck74 Profilo | Guru

probabilmente il funzionamento delle altre pagine non è esattamente uguale a quello di questa.

Anche io ho riscontrato in alcuni casi dei problemi lavorando manualmente sui FromView. In particolare mi sono accorto che nel Page_Load il formView è ancora nello stato "appena visualizzato" nella pagina, e che andrà nel nuovo stato (esempio se clicco su modifica) non subito al postback, ma NON prima del proprio DataBound, a meno che non ci sia un evento di un altro controllo (esempio un click) che ne modifichi lo stato (gli eventi dei controlli vengono eseguiti prima del databound e prima della modifica di stato).

quindi dovresti analizzare bene il flusso di entrambe le pagine, e vedrai che qualcosa di diverso lo troverai.

Ciao

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

skraus Profilo | Junior Member

Ho cantato vittoria troppo presto

Ho provato entrambe le modalità suggeritemi, ma nel primo caso il controllo viene aggiunto solo la prima volta che la pagina viene caricata, ossia quando si verifica il DataBound del formView, nel secondo caso, PreRender, il controllo, indipendentemente dalle modifiche apportate ai controlli interni, viene renderizzato sempre ex-novo.

Il problema secondo me non è nell'evento, perchè nel pageLoad, dopo il controllo sulla proprietà CurrentMode del FormView, il findControl del div runat server, mi restituisce l'istanza del controllo HtmlGenericControl, che si trova all'interno dell'InsertTemplate del FormView, ossia ciò dovrebbe comprovare che il formView è già in modalità Insert, diversamente non troverebbe l'HtmlGenericControl.

Il problema potrebbe essere sull'Add alla collection Control del HtmlGenericControl ?

Grazie, ancora a tutti.
Sk

Gluck74 Profilo | Guru

mi sono perso..... :-(



____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

skraus Profilo | Junior Member

In pratica ho rimesso le cose come stavano in origine.
Sk

=====================================================================
Alla fine ho desistito.

Ho inserito un'istanza dell'ascx direttamente nel file .aspx
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5