29 messaggi dal 04 ottobre 2001
La situazione è la seguente.
Creo, alla pressione di un tasto, 2 txtbox. La prima deve ricevere un numero e la seconda un importo.
Ogni volta che clicco sul tasto, aggiungo sotto alle precedenti, altre due textbox, così da avere una sorta di tabella, dove nel campo di sinistra inserisco le quantità e nel campo di destra, gli importi. Fin qui ho risolto così:

Private Sub AggiungiTextBox(Optional ByVal n As Integer = -1)
Dim IdN As String = ""
Dim IdPrezzo As String = ""
Dim tb As TextBox
Dim tb3 As TextBox

If n = -1 Then
IdN = "txtN" & NumeroTxtBox
IdPrezzo = "txtPrezzo" & NumeroTxtBox
Else
IdN = "txtN" & n
IdPrezzo = "txtPrezzo" & n
End If

tb = New TextBox()
tb3 = New TextBox()

tb.ID = IdN
tb.EnableViewState = False
Me.PlaceHolder1.Controls.Add(tb)

tb3.ID = IdPrezzo
tb.EnableViewState = False
Me.PlaceHolder1.Controls.Add(tb3)

Me.PlaceHolder1.Controls.Add(New LiteralControl("<br>"))
End Sub

Ovviamente utilizzo una variabile ViewState per incrementare NumeroTxtBox.
Ora viene il bello.
Devo recuperare i dati ottenendo i totali parziali per ogni riga (quantità * importo) e il totale complessivo (la somma di tutti i parziali. Ma non so come.
Per recuperare i dati utilizzo una cosa del genere:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e_ As System.EventArgs)
Dim s As New StringBuilder()
Dim ctr As Control
For Each ctr In Me.PlaceHolder1.Controls.
If TypeOf ctr Is TextBox Then
Dim tbx As TextBox = DirectCast(ctr, TextBox)
s.Append(String.Format("<b>{1}</b>: {0}<br>", tbx.Text,_ tbx.ID))
End If
Next
Me.Label1.Text = s.ToString
End Sub

Ma per fare i calcoli, come faccio a distinguere il textbox "quantità" da quello "importo" e moltiplicarli l'uno all'altro?
Probabilmente mi sto perdendo in un bicchier d'acqua.

Alberto
2.198 messaggi dal 30 novembre 2001
basta che nell'ID delle textbox ci metti che iniziano le prime con "quantita" e le seconde con "importo".
29 messaggi dal 04 ottobre 2001
Scusa ma non ho mica capito. Cosa intendi?

Alberto
2.198 messaggi dal 30 novembre 2001
invece di scrivere:
tb.ID = IdN
tb.EnableViewState = False
Me.PlaceHolder1.Controls.Add(tb)

tb3.ID = IdPrezzo

scrivi:
tb.ID = "quantita" + IdN
tb.EnableViewState = False
Me.PlaceHolder1.Controls.Add(tb)

tb3.ID = "importo" + IdPrezzo

poi quando cicli all'interno dei controls per sapere se è una textbox aggiungi anche il controllo:
Dim tbx As TextBox = DirectCast(ctr, TextBox)
If tbx.ID.StartsWith("quantita") Then
End If

in questo modo sai di quale tipo di textbox si tratta.
Spero di essere stato piu chiaro.
29 messaggi dal 04 ottobre 2001
Chiarissimo.
In effetti c'ero appena arrivato anche io, anche se leggermente diverso:

If Left(tbx.ID, 4) = "txtN" Then

End If

Anzichè aggiungere il prefisso "quantita" o "importo" prelevo il nome ID tranne il numero.

Grazie per la tempestività della tua risposta.
Buona serata.

Alberto

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.