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..

VVoVe:
Rispondi quotando