2 messaggi dal 20 marzo 2006
Salve a tutti, avrei un grande problema ;)
In una pagina aspx, dopo aver compilato dei campi in una view (richiesta di prenotazione), vado a generare dei panel DINAMICAMENTE in cui ci sono dei textbox (nome, cognome e sesso dei clienti). Alla fine di questa view ho un evento OnClick, e dopo aver cliccato il bottone quei valori dei textbox che ho inserito precedentemente si perdono senza tener traccia del loro state. Come posso fare? Vi posto un pò di codice:

--------BookingForm.aspx----------
Protected Sub BookingButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)
MultiViewBookingForm.ActiveViewIndex = 4

'generazione dinamica dei controlli per l'inserimento dei dati del passeggero **SCRITTURA**
Dim s As Integer = 1 ' contatore dei panel
Dim n As Integer = 1 'contatore dei passeggeri
Dim z As Integer = 0 'contatore del numero delle stanze

'per ogni tupla della RoomsDetailGridView
For Each k As GridViewRow In RoomsDetailGridView.Rows

'inserisci stanze in base alla quantità espressa nella tupla
Do While Not z = k.Cells.Item(1).Text.ToString
Dim p As New Panel
p.ID = "Panel" + s.ToString
p.Width = 700
DynamicPanel.Controls.Add(p)

If k.Cells.Item(0).Text.Trim.Equals("Singola") Then

p.GroupingText = "Stanza Singola"

Dim dp1 As New DatiPasseggero()
p.Controls.Add(dp1)
dp1.ID = "DP" + n.ToString
n = n + 1
(...)
-------------datiPasseggero.ascx-------------
<%@ Control Language="VB" ClassName="DatiPasseggero" %>

<script runat="server">

Public Property Sesso()
Get
Return DropDownList1.SelectedValue()
End Get
Set(ByVal value)
DropDownList1.SelectedValue = value.ToString
End Set
End Property

Public Property StatoCivile()
Get
Return DropDownList2.SelectedValue()
End Get
Set(ByVal value)
DropDownList2.SelectedValue = value.ToString
End Set
End Property

Public Property Nome()
Get
Return TextBox1.Text
End Get
Set(ByVal value)
TextBox1.Text = value.ToString
End Set
End Property

Public Property Cognome()
Get
Return TextBox2.Text
End Get
Set(ByVal value)
TextBox2.Text = value.ToString
End Set
End Property

</script>

Nome:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
Cognome:
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
Sesso:
<asp:DropDownList ID="DropDownList1" runat="server">
<asp:ListItem>M</asp:ListItem>
<asp:ListItem>F</asp:ListItem>
</asp:DropDownList>
Stato civile:
<asp:DropDownList ID="DropDownList2" runat="server">
<asp:ListItem>Celibe</asp:ListItem>
<asp:ListItem>Nubile</asp:ListItem>
</asp:DropDownList>
<br />

VI RINGRAZIO ANTICIPATAMENTE DELLE RISPOSTE (SE CI SARANNO ;) )
l'intero albero dei controlli viene ricreato ad ogni postback?

i controlli creati "dinamicamente" devono essere ricreati ogni volta che la pagina viene richesta.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
2 messaggi dal 20 marzo 2006
Potresti spiegarti meglio?
In una view genero i controlli dinamici, poi ho un postback, e vado su un'altra view in cui perdo lo state dei controlli della view precedente... io ho sentito di un savecontrolstate()... possibile?
devi "solo" ricreare i controlli creati , scusa il brutto gioco di parole.

se creai una texbox runtime, al successivo postback devi ricrearla affinche i valori siano ripristinati correttamente.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
104 messaggi dal 19 maggio 2001
Ho lo stesso problema anche io ed ho usato il seguente codice ma non funge :

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
for (int i = 0; i < 10; i++)
{
TextBox txt = new TextBox();
txt.ID = "risposta" + i;
PlaceHolder1.Controls.Add(txt);
}
}
}

Nell'evento Load creo i controlli.

protected void Button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 10; i++)
{
TextBox txt = new TextBox();
txt.ID = "risposta" + i;
PlaceHolder1.Controls.Add(txt);
}

for (int i = 0; i < 10; i++)
{
TextBox txt = (TextBox)PlaceHolder1.FindControl("risposta" + i);
Response.Write(txt.Text);

}
}

alla pressione di un bottone li ricreo ma il testo non c'è !! Come mai ?
ricreali sempre nel pageload.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
104 messaggi dal 19 maggio 2001
Funziona perfettamente ... grazie !! Però a questo punto, al posto di dover rigenerare gli stessi controlli...io direi di usare Request.Form. La mia pagina infatti, una volta fatto il postback deve generare dinamicamente altri controlli, per cui rigenerare quelli precedenti per recuperarne i valori e generare quelli nuovi, mi sembra inutile...che ne pensate ?
bhe non ti devi preoccupare è più o meno quello che fà asp.net con i controlli aggiunti in modo dichiarativo alla pagina.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx

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.