Allora, visto che HO mangiato posso scrivere un po' di codice :
Il controllo è questo (non ha una classe da cui eredita, quindi niente proprietà pubbliche, e non lo lo registro con TagPrefix...lo carico solo con LoadControl) :
codice:
<%@ Control Language="vb" AutoEventWireup="false" %>
<tr>
<td height=10px colspan=8></td>
</tr>
<tr>
<td align="left" width=13%>
<font class="labels_small">Cod.Art:</font>
</td>
<td align="left" width=13%>
<asp:textbox id="tbcodart" runat="server" CssClass="boxdocumenti" />
</td>
</tr>
.
.
.
Questo è il pezzo di codice con il placeholder che viene riempito di controlli ascx :
codice:
<TABLE cellSpacing="1" cellPadding="1" width="100%" align="center" border="0">
<asp:placeholder id="phrigaordine" runat="server"></asp:placeholder>
</TABLE>
Questo è il codice "a freddo" (nel Page_Load) che carica il primo ascx e lo piazza nel placeholder (e per ora mette il controllo in un hashtable con chiave il numero di riga):
codice:
' ==============================
' CARICA LA PRIMA RIGA ORDINE...
' ==============================
If Not IsPostBack Then
If phrigaordine.Controls.Count = 0 Then
Dim ctlrigheord As Control = LoadControl("controls/ctrRigaOrdine.ascx")
phrigaordine.Controls.Add(ctlrigheord)
lbrighe.Text = "- Righe: <font color=red>" & phrigaordine.Controls.Count & "</font>"
Session("numerorighe") = 0
ListaASCX.Add(Convert.ToString(Session("numerorighe")), ctlrigheord)
Session("hash") = ListaASCX
End If
End If
ed ecco le due Sub che Aggiungono e Tolgono le righe (la seconda le toglie tutte per ora):
codice:
Public Sub AddRow(ByVal Src As Object, ByVal e As System.Web.UI.ImageClickEventArgs)
' Carica i vecchi...
ListaASCX = DirectCast(Session("hash"), Hashtable)
Dim Chiave As String = ""
For Each Chiave In ListaASCX.Keys
Response.Write(Chiave)
phrigaordine.Controls.Add(CType(ListaASCX(Chiave), Control))
Next
' Ne aggiunge uno
Dim ctlrigheord As Control = LoadControl("controls/ctrRigaOrdine.ascx")
phrigaordine.Controls.Add(CType(ListaASCX(Chiave), Control))
Session("numerorighe") = CInt(Session("numerorighe")) + 1
ListaASCX.Add(Convert.ToString(Session("numerorighe")), ctlrigheord)
Session("hash") = ListaASCX
lbrighe.Text = "- Righe: <font color=red>" & ListaASCX.Count & "</font>"
End Sub
Public Sub ClearRows(ByVal Src As Object, ByVal e As System.Web.UI.ImageClickEventArgs)
Dim ht As Hashtable = CType(Session("hash"), Hashtable)
Dim numerocontrolli As Integer = ht.Count
If phrigaordine.HasControls Then
phrigaordine.Controls.Clear()
End If
Tools.MessageBox(Me, "Rimosse " & numerocontrolli & " righe.")
lbrighe.Text = "- Righe: <font color=red>0</font>"
End Sub
E funziona (quasi).
Pero' ci sono due problemi :
1 - Non mantiene i valori scritti nelle precedenti righe (problema grosso, che forse mi obbligherà ad optare per una soluzione completamente diversa..)
2 - Se rimuovo TUTTE le righe (con phrigaordine.Controls.Clear)
aggiungendone poi una le rimette tutte !!!
VVoVe:
ora provo ad implementare l'esempio che mi hai dato tu di Apogeo..