Creare dinamicamente <INPUT TYPE="FILE">
Mirella
Mirella non è online. Ultima attività: 24/06/2009 14.41.53Mirella
il 27 giugno 2003 alle 16.33
111 messaggi dal 28 marzo 2001
Buongiorno a tutti,
sto cercando di creare una pagina che alla pressione di un linkbutton mi aggiunga il controllo in oggetto.
Il mio problema è che ad ogni caricamento perdo il valore che eventualmente era stato inserito.
In qualche modo sono riuscita a memorizzarlo in un array, ma come faccio a inizializzare i miei oggetti al successivo caricamento della pagina?

Codice:
<b>Questa è la funzione che memorizza il valore degli oggetti input type="file" in un array (aFile)</b>

Private Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.PreRender

ReDim aFile(ViewState("nRigheAggiunte"))
Dim cFile As Control
Dim i As Integer = 0

For Each cFile In PlaceHolder1.Controls

If TypeOf cFile Is HtmlInputFile Then

Dim cInputFile As HtmlInputFile = New HtmlInputFile()
cInputFile = cFile

If Not cInputFile.PostedFile Is Nothing Then
aFile(i) = cInputFile.PostedFile.FileName
End If

i = i + 1

End If

Next
End Sub

<b>Questa è la funzione che dovrebbe inizializzare gli oggetti:</b>
Private Sub Page_Unload(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Unload

Dim cFile As HtmlControl
Dim i As Integer
For i = LBound(aFile) To UBound(aFile)

For Each cFile In PlaceHolder1.Controls

If TypeOf cFile Is HtmlInputFile Then

If cFile.ID = "file_allDettaglio" & i Then
cFile.Attributes.Add ??????
End If

End If

Next

Next

End Sub

<b>Questo è il codice del click del linkButton</b>
Private Sub lnkAddAllegati_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lnkAddAllegati.Click

If IsNothing(ViewState("nRigheAggiunte")) Then
ViewState("nRigheAggiunte") = 1
Else
ViewState("nRigheAggiunte") = ViewState("nRigheAggiunte") + 1
End If

Dim iRow As Integer
iRow = ViewState("nRigheAggiunte")
Dim i As Integer
For i = 0 To iRow - 1
Dim controlFile As HtmlInputFile = New HtmlInputFile()
controlFile.ID = "file_allDettaglio" & i
controlFile.Size = 60
PlaceHolder1.Controls.Add(controlFile)
Next

End Sub

Non ditemi che ho scritto una valanga di codice x niente...
Grazie in anticipo

Mirella
Microsoft Most Valuable Professional
Re: Creare dinamicamente <INPUT TYPE="FILE">
Ricciolo
Ricciolo non è online. Ultima attività: 02/07/2009 11.58.20Ricciolo Top Poster
il 30 giugno 2003 alle 13.55
Hai scritto una valanga di codice per niente

Devi ricreare i controlli ad ogni postback, in fase di init o comunque nell'evento precedente a quando tu vuoi accedere ai suoi valori.
Quindi il codice che crea i controlli nel pulsante lo devi spostare in page_init o page_load

PS:
Dim cInputFile As HtmlInputFile = New HtmlInputFile()
cInputFile = cFile

è sbagliato perché crei un istanza per niente che butti via subito:
Dim cInputFile As HtmlInputFile
cInputFile = cFile

Ciao

Il mio blog
Homepage
Re: Creare dinamicamente <INPUT TYPE="FILE">
Mirella
Mirella non è online. Ultima attività: 24/06/2009 14.41.53Mirella
il 30 giugno 2003 alle 15.33
111 messaggi dal 28 marzo 2001
Ok, ma come mantengo il valore della casella, visto che non si può impostare la proprietà EnableViewState (almeno credo)?
Se il codice che crea l'oggetto lo sposto nella _Init o nella _Load, lo esegue sempre, e non solo alla pressione del tasto, dico bene?

Mirella
Microsoft Most Valuable Professional
Re: Creare dinamicamente <INPUT TYPE="FILE">
Ricciolo
Ricciolo non è online. Ultima attività: 02/07/2009 11.58.20Ricciolo Top Poster
il 30 giugno 2003 alle 17.01
Mirella ha scritto:
Ok, ma come mantengo il valore della casella, visto che non si può impostare la proprietà EnableViewState (almeno credo)?

Si mantiene già da solo, prova con una textbox semplice e vedrai che funziona, la proprietà EnableViewState la puoi cmq impostare da codice ma in questo caso non centra ed già attiva di default.

Se il codice che crea l'oggetto lo sposto nella _Init o nella _Load, lo esegue sempre, e non solo alla pressione del tasto, dico bene?

Sì ma nessuno ti vieta di salvare un piccolo flag nel viewstate che lo abiliti o meno

Ciao

Il mio blog
Homepage
Re: Creare dinamicamente <INPUT TYPE="FILE">
Mirella
Mirella non è online. Ultima attività: 24/06/2009 14.41.53Mirella
il 30 giugno 2003 alle 17.45
111 messaggi dal 28 marzo 2001
Ricciolo ha scritto:
Si mantiene già da solo, prova con una textbox semplice e vedrai che funziona, la proprietà EnableViewState la puoi cmq impostare da codice ma in questo caso non centra ed già attiva di default.


MA A ME SERVE L'OGGETTO FILE,PERCHE' DEVO PERMETTERE ALL'UTENTE DI ALLEGARE FILES


NEL PLACEHOLDER I CONTROLLI VENGONO AGGIUNTI UNO DI FIANCO ALL'ALTRO, A ME SERVONO UNO SOTTO L'ALTRO, COME DEVO FARE?

Grazie 1000

Mirella
Re: Creare dinamicamente <INPUT TYPE="FILE">
Mirella
Mirella non è online. Ultima attività: 24/06/2009 14.41.53Mirella
il 1 luglio 2003 alle 10.51
111 messaggi dal 28 marzo 2001
Mirella ha scritto:
NEL PLACEHOLDER I CONTROLLI VENGONO AGGIUNTI UNO DI FIANCO ALL'ALTRO, A ME SERVONO UNO SOTTO L'ALTRO, COME DEVO FARE?


Ci sono riuscita:
Dim controlBr As HtmlGenericControl = New HtmlGenericControl()
controlBr.InnerHtml = "<br>"
PlaceHolder1.Controls.Add(controlBr)


Ho spostato la creazione degli oggetti nella page Load, ma non riesco a ciclarli se non nella Page_PreRender che viene eseguita per ultima, quindi dopo che ho scritto gli altri dati nel dbase. Come faccio a controllare la validità dei file allegati prima dell'evento Page_PreRender?

Grazie

Mirella
Re: Creare dinamicamente <INPUT TYPE="FILE">
Mirella
Mirella non è online. Ultima attività: 24/06/2009 14.41.53Mirella
il 1 luglio 2003 alle 16.35
111 messaggi dal 28 marzo 2001
Ho risolto spostando il codice del pulsante che registrava i dati del form nell'evento page_PreRender, spero che tutto ciò non abbia "effetti collaterali"...

Grazie per l'attenzione

Mirella

Vai a:
Torna al forum |   Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.

COMMUNITY
ULTIMI MESSAGGI
MEDIA
IN EVIDENZA
MISC
Powered by .db Forums "Caesar Reborn" v. 2009.6.9