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:
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
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:
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)
Il controllo viene creato (a video lo vedo) ma se provo a leggerne il valore mi dice ancora che non esiste!
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.