Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881

    modificare da pagina aspx proprietà di controlli contenuti in UC annidati

    Ho una pagina aspx che contiene diversi UserControl e alcuni anche annidati dentro a questi.
    Ho modo dalla pagina "contenitore" di modificare (ad esempio) la proprietà enabled di textbox o di dropdownlists contenuti negli usercontrols, conoscendo l'ID del controllo?

    L'idea è che, in determinate condizioni, sul prerender del contenitore vorrei disabilitare alcuni campi del form che viene creato...
    Ero partito gagliardo con una cosa così nella pagina contenitore:
    codice:
    Protected Sub page_prerender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
            If <varie condizioni> Then
                'ciclo su tutti i controlli presenti nella pagina per disabilitare quelli che voglio bloccare
                Dim cparent As Control
                Dim ctrl As Control
                For Each cparent In Page.Controls
                    For Each ctrl In cparent.Controls
                        If TypeOf ctrl Is TextBox Then
                            Select Case ctrl.ID
                                Case "pippo", "pluto", "..."
                                    ctrl.enabled = True
    
                                Case Else
    
                            End Select
                        End If
                        If TypeOf ctrl Is DropDownList Then
                            Select Case ctrl.ID
    
                            End Select
                        End If
    ...
    ma mi sono ridimensionato subito perchè vedo che non è così semplice ...
    sgoogolando ho trovato che tanto per cominciare dovrei aggiungere ai controlli negli usercontrol una proprietà pubblica che fa il get/set dell'enabled dei singoli controlli e poi usare questa dalla pagina contenitore... però messa così diventa un lavoro abnorme!
    C'è una via più breve?
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Perche' lavoro abnorme ? Perche' sono tanti controlli ?

    Comunque, i System.Web.UI.Controls dello UC per loro proprieta' di default sono private, cioe' visti solo dallo usercontrol.

    E' ovvio che devi inserire, nello UC, un "ponte" con il mondo esterno.

    Esempio di "gate" per il mondo esterno, nello UserControl:

    Nella parte ASCX:
    codice:
    <asp:TextBox ID="tb_cognome" runat="server"></asp:TextBox>
    

    Nella parte Code-Behind:
    codice:
    Partial Class TuoUserControl
        Inherits System.Web.UI.UserControl
    
         ' Espone la proprietà "enabled" della textbox per farla modificare alla pagina che lo ospita
        Public Property textbox_abilitata() As Boolean
                Return Me.tb_cognome.enabled
            End Get
    
            Set(ByVal value As String)
                 Me.tb_cognome.enabled = value
            End Set
        End Property
    End Class

    Uso della proprieta' dalla pagina ASPX che lo ospita:
    codice:
      IDUserControl.textbox_abilitata= True


    PERO'...MI SEMBRA DI CAPIRE CHE SIA PIUTTOSTO 'MASSIVO' L'INTERVENTO CHE DEVI FARE.
    IL PROBLEMA E' CHE LE TEXTBOX E LE DROPDOWNLIST SONO TANTI/E E DEVI QUINDI 'SCANSIONARE' LE TIPOLOGIE ?
    Ultima modifica di djciko; 14-10-2015 a 18:29

  3. #3
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    Si se fossero tre o quattro controlli non mi preoccuperebbe particolarmente ma ho almeno una quarantina di usercontrol che contengono almeno una trentina di controlli tra checkboxes, textboxes, dropdownlists, linkbuttons, buttons, .... da verificare singolarmente (devo intervenire selettivamente, alcuni vanno disabilitati, altri nascosti, altri lasciati funzionare, ...).
    Poi ci sono usercontrols che si annidano in altri usercontrols... ci arrivo dalla pagina aspx contenitore?

    (il lavoro riguarda il backend di un ecommerce che sto interfacciando con un erp: in alcune situazioni devo disabilitare parte delle pagine di gestione dei dati pubblicati nello shop, tipo le giacenze e i prezzi, perchè questi vengono prelevati direttamente dall'erp e quindi non devono essere "manipolabili" nel backend dell'ecommerce.
    Mi preoccupa poi un'altra cosa più delicata che è la questione dell'aggiornamento dei files dell'ecommerce: se faccio le modifiche di cui sopra e poi devo sostituire i files con quelli di una nuova release mi perdo tutte le modifiche... "sob, che vita grama" -cit.-)
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

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.