Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    recuperare proprietà di un controllo utente col Codebehind

    Mi potreste dire come recuperare una proprietà di un controllo utente in una pagina che utilizza il Codebehind????


    Vi mando un esempio

    codice:
    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="comando_utente1.aspx.vb" Inherits="corso_apogeo.comando_utente1"%>
    <%@ Register TagPrefix="uc1" TagName="scegli_provincia" Src="scegli_provincia.ascx" %>
    <HTML>
    	<HEAD>
    		<title>comando_utente1</title>
    	</HEAD>
    	<body>
    		<form id="Form1" method="post" runat="server">
    			<H3><center>Utilizzo di un controllo utente</center></H3>
    			<uc1:scegli_provincia id="Scegli_provincia1" runat="server"></uc1:scegli_provincia>
    			<asp:Button id="Button1" runat="server" Text="Provincia selezionata"></asp:Button>
    		</form>
    	</body>
    </HTML>
    Codice sottostante
    codice:
    Public Class comando_utente1
        Inherits System.Web.UI.Page
        Protected WithEvents Button1 As System.Web.UI.WebControls.Button
    
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Inserire qui il codice utente necessario per inizializzare la pagina
            
        End Sub
    
        Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
    		'come recuperare proprietà di Scegli_provincia1?????
        End Sub
    End Class

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    236

    HO PROVATO

    ad incollare il tuo codice ma non funziona il controllo che vuoi utilizzare...però se utilizzi un qualsiasi controllo server puoi pescare il dato selezionato da code behind...

    koning

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    Re: HO PROVATO

    Originariamente inviato da koning
    ad incollare il tuo codice ma non funziona il controllo che vuoi utilizzare...però se utilizzi un qualsiasi controllo server puoi pescare il dato selezionato da code behind...

    koning
    Vi mando un esempio appena creato:

    controllo_utente.ascx
    codice:
    <%@ Control Language="vb" AutoEventWireup="false" Codebehind="controllo_utente.ascx.vb" Inherits="corso_apogeo.controllo_utente" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
    <asp:TextBox id="TextBox1" runat="server" Width="355px"></asp:TextBox>
    controllo_utente.ascx.vb
    codice:
    Public MustInherit Class controllo_utente
        Inherits System.Web.UI.UserControl
        Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
    
    #Region " Codice generato da Progettazione Web Form "
    
        'Chiamata richiesta da Progettazione Web Form.
        <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
    
        End Sub
    
        Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
            'CODEGEN: questa chiamata al metodo è richiesta da Progettazione Web Form.
            'Non modificarla nell'editor del codice.
            InitializeComponent()
        End Sub
    
    #End Region
        Public Property Testo$()
            Get
                Return Me.TextBox1.Text
            End Get
            Set(ByVal Value$)
                Me.TextBox1.Text = Value
            End Set
        End Property
    
    
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Inserire qui il codice utente necessario per inizializzare la pagina
        End Sub
    
    End Class




    prova_controllo_utente.aspx
    codice:
    <%@ Register TagPrefix="uc1" TagName="controllo_utente" Src="controllo_utente.ascx" %>
    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="prova_controllo_utente.aspx.vb" Inherits="corso_apogeo.prova_controllo_utente"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    	<HEAD>
    		<title>prova_controllo_utente</title>
    		<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
    		<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
    		<meta name="vs_defaultClientScript" content="JavaScript">
    		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    	</HEAD>
    	<body>
    		<form id="Form1" method="post" runat="server">
    			
    
    
    				<uc1:controllo_utente id="Controllo_utente1" runat="server" Testo="Testo immesso in progettazione"></uc1:controllo_utente></P>
    			
    
    
    				<asp:Button id="Button1" runat="server" Text="Imposta valore controllo utente"></asp:Button></P>
    			
    
    
    				<asp:Button id="Button2" runat="server" Text="Recupera valore controllo utente"></asp:Button></P>
    		</form>
    	</body>
    </HTML>
    prova_controllo_utente.aspx.vb
    codice:
    Public Class prova_controllo_utente
        Inherits System.Web.UI.Page
        Protected WithEvents Button1 As System.Web.UI.WebControls.Button
        Protected WithEvents Button2 As System.Web.UI.WebControls.Button
    
    #Region " Codice generato da Progettazione Web Form "
    
        'Chiamata richiesta da Progettazione Web Form.
        <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
    
        End Sub
    
        Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
            'CODEGEN: questa chiamata al metodo è richiesta da Progettazione Web Form.
            'Non modificarla nell'editor del codice.
            InitializeComponent()
        End Sub
    
    #End Region
    
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Inserire qui il codice utente necessario per inizializzare la pagina
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
        End Sub
    
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    
        End Sub
    End Class

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Allora, da quello che ho capito, per recuperare o impostare proprietà di controlli utente a livello di programmazione da un file di codice sottostante, bisogna:
    1) il controllo deve essere creato da codice, e non trascinato nella pagina
    2) impostare il parametro @ Reference nella pagina
    3) mettere un placeholder dentro il form
    4) dichiarare una variabile di tipo control
    5) nell'evento load della pagina instaziare la variabile con LoadControl
    6) aggiungere il controllo al Placeholder
    7) ADESSO SI POSSONO UTILIZZARE O IMPOSTARE LE PROPRIETA' DEL CONTROLLO UTENTE


    Ma con Asp.net, non doveva essere tutto più facile? o mi sfugge qualcosa?

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    236

    io avevo fatto

    una routine che mi permettesse di selezionare dei controlli che sono piazzati all'interno della pagina...

    TI POSTO IL MIO ESEMPIO...è EFFETTIVAMENTE + DIFFICILE RISPETTO AD ESEMPIO A VB

    Public Function text_list(ByVal foglio As ControlCollection, ByVal capacita As Integer, ByVal controllo As String) As ArrayList
    Dim c As Control
    Dim id As String
    Dim str As New ArrayList(capacita)
    For Each c In foglio
    If c.ID = "Form1" Then
    Dim k As Control
    For Each k In c.Controls
    id = k.ID '// contiene gli ID dei controlli
    If InStr(id, controllo, CompareMethod.Text) <> 0 Then
    str.Add(id)
    Else
    End If
    Next
    End If
    Next
    text_list = str
    End Function

    è INTERESSANTE NOTARE CHE QUESTA FUNZIONE RESTITUISCE UNA COLLEZIONE DI RIFERIMENTI AGLI OGGETTI CERCATI E SOPRATTUTTO PASSANDO LA STRINGA ( AD ESEMPOIO TEXTBOX) GLI DICO DI CERCARE TUTTI I TEXT BOX ALL'INTERNO DI QUESTO FORM

    fare questa funzioncina mi è costato veramente tanto

    Koning

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    Re: io avevo fatto

    Originariamente inviato da koning
    una routine che mi permettesse di selezionare dei controlli che sono piazzati all'interno della pagina...

    TI POSTO IL MIO ESEMPIO...è EFFETTIVAMENTE + DIFFICILE RISPETTO AD ESEMPIO A VB

    Public Function text_list(ByVal foglio As ControlCollection, ByVal capacita As Integer, ByVal controllo As String) As ArrayList
    Dim c As Control
    Dim id As String
    Dim str As New ArrayList(capacita)
    For Each c In foglio
    If c.ID = "Form1" Then
    Dim k As Control
    For Each k In c.Controls
    id = k.ID '// contiene gli ID dei controlli
    If InStr(id, controllo, CompareMethod.Text) <> 0 Then
    str.Add(id)
    Else
    End If
    Next
    End If
    Next
    text_list = str
    End Function

    è INTERESSANTE NOTARE CHE QUESTA FUNZIONE RESTITUISCE UNA COLLEZIONE DI RIFERIMENTI AGLI OGGETTI CERCATI E SOPRATTUTTO PASSANDO LA STRINGA ( AD ESEMPOIO TEXTBOX) GLI DICO DI CERCARE TUTTI I TEXT BOX ALL'INTERNO DI QUESTO FORM

    fare questa funzioncina mi è costato veramente tanto

    Koning
    Ti ringrazio della risposta. Adesso la provo
    Ciao

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Non è che puoi spiegare come utilizzare la tua funzione?
    Ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    236

    ehehe....

    usi la funzione di prima per farti restituire i controlli text di una pagina


    poi io uso questo codice per andare a scrivere all'interno di tutti i textbox che mi ha trovato

    Dim myControl1 As TextBox
    Dim Myenumerator As System.Collections.IEnumerator
    lista_control = text_list(Me.Controls, 10,"text")
    Myenumerator = lista_control.GetEnumerator
    Do While Myenumerator.MoveNext
    myControl1 = FindControl(Myenumerator.Current)
    myControl1.Text = ds.Tables(0).Rows(0).Item(lista(c))
    c = c + 1
    Loop

    è più chiaro???

    koning

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    :quote:
    Grazie

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.