Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di JAEP
    Registrato dal
    Jan 2004
    residenza
    Treviso
    Messaggi
    421

    Richiamare un UserControl dal code-behind

    Salve a tutti,
    ho creato un controllo ascx e adesso ho necessità di controllarlo dal code-behind (da dentro il file aspx.cs), il fatto che, nostante questo sia inserito nella pagina, io non riesco a richiamarlo.

    Ho letto da qualche parte che si usa LoadControl, tenendo conto che uso c#, come posso fare?

    Grazie mille
    Tutte le leggi umane, non quelle divine, sono il risultato di uno sforzo di uomini. Altri uomini vengono, modificano, aboliscono, perfezionano. Non ci vuole nulla ad abolire. Distruggere è facile, ma ricostruire è difficile.

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Per usare un controllo personalizzato nel code-behind :

    - fare la classe che eredita da System.Web.UI.UserControl:

    codice:
    Imports System
    Imports System.Web.UI
    Imports System.Web.UI.WebControls
    
    Public Class tuocontrollo
         Inherits UserControl
    
    Public prop1 as String = "prova"
    Public prop2 as String = "prova"
    End Class
    - fare il controllo che eredita da questa classe: (miocontrollo.ascx)

    codice:
    <%@ Inherits = "tuocontrollo" %>
    <SCRIPT RUNAT="server">
    Sub Page_Load(Src As Object, E As EventArgs)
    	If Not IsPostBack Then
    	 	lbl1.text = prop1
    	 	lbl2.text = prop2
    	End If
    End Sub
    </SCRIPT>
    
    <TABLE>
      <TR>
        <TD>
         <asp:Label ID="lbl1" runat="server"></asp:Label>
         <asp:Label ID="lbl2" runat="server"></asp:Label>		
        </TD>
      </TR>
    </TABLE>
    </TD></TR></TABLE>
    - Accedere alle proprieta' in questo modo : (pagina.aspx)

    nel page load :

    codice:
    Dim Controllo as Control = LoadControl("miocontrollo.ascx")
    Ctype(Controllo,tuocontrollo).prop1 = "CIAO1"
    Ctype(Controllo,tuocontrollo).prop2 = "CIAO2"
    plh.Controls.Add(Controllo)

    nell'html:
    codice:
    <asp:placeholder id="plh" runat="server" />
    l'ho scritto in vb ma il senso si capisce no ? prova.

  3. #3
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    scusami naturalmente l'ultima parte riguardava il code-behind..

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    642
    scusa se ho capito bene in questo modo i vari elementi nel file.ascx possono essere referenziati nel codebehind della pagina.aspx?

    il file ascx puo' contenere codice server? oppure sol otag html?
    Paolo Spinoglio
    Milano

  5. #5
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    VVoVe: ma questo l'ho scritto a febbraio

    1. I controlli ascx hanno piu' o meno lo stesso ciclo di vita delle pagine aspx...quindi hanno anche codice lato server (page_load, etc)

    2. Si, dalla pagina e quindi dal suo codebehind puoi accedere alle proprietà del tuo controllo, con una sintassi del genere

    codice:
    Ctype(Controllo,tuocontrollo).prop1 = "stringa"
    (a patto di aver dichiarato con il modificatore -public- la proprietà del controllo)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.