Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    642

    riuscirò a passare una variabile nella user control?

    purtoppo non riesco a capire come si fa a passare un valore dalla pagina aspx alla user control, sebbene abbia visto su libri e internet non ci riesco proprio.

    Ho necessita' di caricare una user control a runtime con il comando loadcontrol e finqua ci sono.

    Poi devo passare una variabile definita nella pagina aspx alla user control assegnadola ad un'altra variabile e qui non so come diavolo fare mi potete aiutare?

    ad esempio supponiamo che io nella pagina.aspx ho: varAspx=3
    voglio poter assegnare questo valore a varAscx nella user control.

    se le due variabili si trovassero all'interno della stessa pagina farei cosi

    varAscx=varAspx.

    E possibile per favore avere un esempio funzionante da copia e incolla del codice da mettere nella pagina aspx e quello nella usercontrol per il banale esempio di sopra?





    codice:
    <%@ page ...%>
    <%
    public varAspx as string="ok"
    
    Public Sub Page_Load(ByVal Sender As System.Object, ByVal E 
    As System.EventArgs)
            Dim uc As UserControl = LoadControl("left.ascx")
            left.Controls.Add(uc)
    
    end sub
    %>
    
    <asp:PlaceHolder id="left" runat="server" />
    e poi? cosa aggiungo a questo codice per assegnare alla variabile varAscx della user control il valore di varAspx della pagina aspx?

    e nella user control cosa va messo?
    codice:
    <%@ control%>
    <%
    public varAscx as string=""
    
    Public Sub Page_Load(ByVal Sender As System.Object, ByVal E 
    As System.EventArgs)
    response.write(varAscx)
    
    end sub
    %>
    Paolo Spinoglio
    Milano

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Allora, hai due classi A e B. Quello che chiedi, lo sai applicare alle classi A e B?

    Pietro

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    642
    a ho capito devo considerare la user control come una classe allora ok ora ho capito e sufficiente fare un ctype
    Paolo Spinoglio
    Milano

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da cipcip
    a ho capito devo considerare la user control come una classe allora ok ora ho capito e sufficiente fare un ctype

    Bene, hai capito Però, non devi considerare un usercontrol come una classe, un User Control è una classe, perciò, come tutte le classi, dall'esterno puoi manovrare solo gli elementi pubblici...
    Pietro

  5. #5
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Cosi' funziona...
    La pagina che contiene lo usercontrol :

    codice:
    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="WebForm1"%>
    <%@ Register TagPrefix="custom" TagName="prova" Src="WebUserControl1.ascx" %>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
      <body MS_POSITIONING="FlowLayout">
    
        <form id="Form1" method="post" runat="server">
         <custom:prova label="ciao" runat=server></custom:prova>
        </form>
    
      </body>
    </html>
    user control (ascx) :

    codice:
    <%@ Control Language="vb" AutoEventWireup="false" Codebehind="WebUserControl1.ascx.vb" Inherits="WebUserControl1" %>
    <asp:Label id="Label1" runat="server">Label</asp:Label>
    user control (code-behind):
    codice:
    Public Class WebUserControl1
        Inherits System.Web.UI.UserControl
    
        Public label As String
        Protected WithEvents Label1 As System.Web.UI.WebControls.Label
    
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Label1.Text = label
        End Sub
    End Class
    se invece devi farlo tramite LoadControl, la procedura che ho sempre usato l'ho scritta qui http://forum.html.it/forum/showthrea...hreadid=945978
    (devi fare un CTYPE per castare il tuo controllo "manovratore" verso la classe dello usercontrol originale)

    le proprieta' poi devono essere pubbliche per essere viste dalla pagina che ospita il controllo. facci sapere del parto

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    642
    mi sono accorto che funziona solo perche' avevo referenziato l'user control in cima alla pgina con la dicitura reference control,

    Senza questa dicitura si puo' far funzionare lo stesso?
    Paolo Spinoglio
    Milano

  7. #7
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    non ho capito cosa intendi...posta il codice

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    642
    codice:
    <%@ Reference Control="~/left.ascx" %>
    <%
    Public Sub Page_Load(ByVal Sender As System.Object, ByVal E As System.EventArgs)
    
            Dim uc As Control = LoadControl("left.ascx")
            Dim left As left = CType(uc, left)
            MyPH.Controls.Add(uc)
    end sub
    <asp:placeholder id="MyPH" runat="server" /> 
    %>
    left è il nome della classe della user control

    questo codice funziona alla grande se appunto c'e' la prima riga di codice altrimenti non funziona
    Paolo Spinoglio
    Milano

  9. #9
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    togli la prima riga

    codice:
    Dim ctlLeft As UserControl = Page.LoadControl("left.ascx")
    CType(ctlLeft, left).ProprietaPubblicaCheVuoiSettare = Valore
    MyPH.Controls.Add(ctlLeft)
    dovrebbe andare

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    642
    niente la classe left non viene vista,mi sa che non si puo fare ho letto su internet che bisogna per forza usare <register control o reference control,
    ameno di non utilizzare uan procedura per me complicata che consiste nel creare una struttura publica nella cartella app_code ecc...,


    a sto punto chiedo?


    se io registro tante user conrtol con il comando register e poi ne carico alcune al volo con il comando loadcontrol, ho un decremento delle prestazioni?
    Paolo Spinoglio
    Milano

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.