Ciao, sto realizzando una procedura interna ed ho problemi proprio nella parte più importante: un wizard per creare un certo tipo di documenti.
Nella prima pagina del wizard l'utente imposta le opzioni con cui verrà generato il documento:
screenShot della pagina 1
Nella seconda pagina i controlli vengono creati dinamicamente in base alle opzioni scelte nella prima, questo per permettere all'utente di sovrascrivere le voci proposte dalla procedura:
screenShot della pagina 2
(le righe in azzurrino coi checkBox spuntati sono quelle che l'utente stà personalizzando)
Nella pagina finale (la terza) dovrei memorizzare il tutto ma mi sono accorto che asp.net non mi vede i checkox e le textbox che ho aggiunto dinamicamente![]()
Questa è la funzioncina rozza con cui genero una riga per la personalizzazione:
Credendo che il problema fosse che creo controlli 'html standard' invece di controlli asp.net ho provato a seguire un tutorial in cui si consigliava di creare i controlli in questa maniera:codice:Protected Function CrateCustomizationRow(ByVal wich As String, ByVal Qt As String, ByVal PN As String, ByVal description As String) As String ' Crea riga di personalizzazione Dim cRow As String cRow += " <tr id='tr" & wich & "'>" cRow += " <td style='width: 21px'>" cRow += " <input type='checkbox' name='chkCustomize" & wich & "' onclick='switchCustomizationRow("" & wich & "")'>" cRow += " </td>" cRow += " <td style='width: 24px' align='center'>" cRow += " <div id='div" & wich & "LblQt'>" & Qt & "</div>" cRow += " <div id='div" & wich & "TBQt' style='display = none'><input type='textbox' name='TBQt" & wich & "' value='" & Qt & "' size='2' class='userInput'></div>" cRow += " </td>" cRow += " <td style='width: 79px'>" cRow += " <div id='div" & wich & "LblPn'>" & PN & "</div>" cRow += " <div id='div" & wich & "TBPn' style='display = none'><input type='textbox' name='TBPn" & wich & "' value='" & PN & "' size='13' class='userInput'></div>" cRow += " </td>" cRow += " <td style='width: 479px'>" cRow += " <div id='div" & wich & "LblDescription'>" & description & "</div>" cRow += " <div id='div" & wich & "TBDescription' style='display = none'><input type='textbox' name='TBDescription" & wich & "' value='" & description & "' size='93' class='userInput'></div>" cRow += " </td>" cRow += " <td style='width: 18px' align='center'>" cRow += " <div id='div" & wich & "LnkSelectorInactive'>[img]images/search-blue-off.gif[/img]</div>" cRow += " <div id='div" & wich & "LnkSelector' style='display = none'>[img]images/search-blue.gif[/img]</div>" cRow += " </td>" cRow += " </tr>" Return cRow End Function 'Crea riga di personalizzazione
Il controllo viene creato (a video lo vedo) ma se provo a leggerne il valore mi dice ancora che non esiste!codice:Dim codeToParse As String = "<asp:Label runat='server' id='lblTest" & wich & "' Text='Sono la lblTest" & wich & "' />" Dim testControl As Control = ParseControl(codeToParse) TestPlaceHolder.Controls.Add(testControl)![]()
Messaggio di errore del compilatore: BC30451: Nome 'lblTestMotor ' non dichiarato.
(dove 'Motor' è un suffisso che appendo io dinamicamente in fase di creazione del controllo)
Riassumendo: come si crea dinamicamente un controllo che prenda il nome (ID) da una variabile in modo che se ne possa, in seguito, leggerne il valore inserito da un utente?
Grazie e scusate, sono migrato ad asp.net da pochissimo tempo.

Rispondi quotando
laceholder> nella pagina default.aspx.
