Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    69

    abilitare una CheckBoxList

    Salve,
    non conosco JS, e devo usare uno script in una pagina aspx.
    Lo script mi dovrebbe permettere di checkare "radio A" o "radio B" in modo che rispettivamente mi disabilitino la visibilità di "CheckBoxList A" o "CheckBoxList B".
    Come posso fare? VVoVe:

  2. #2
    La gestione della visibilità di un oggetto di una pagina aspx è molto semplice e non occorre usare js.
    Esiste un evento SelectedIndexChanged che scatta quando viene selezionato un valore del radiobutton, dentro quell'evento puoi gestire la visibilità delle checkboxlist.

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    In Asp.Net la gestione della visibilità di un oggetto di una pagina aspx è molto complicata bisogna fare i salti mortali per utilizzare gli eventi client con javascript.

    In primis, evita di utilizzare il controllo server <asp:RadioButton. Io non sono riuscito ad aggiungere l'evento onclink client. Se tu ci riuscissi, ti prego di farmelo sapere.
    Allora, utilizzando due semplicissimi controlli html come:
    codice:
    <INPUT type="radio" name="r_ab" id="r_a" value="a" onclick="r_ab_click();"><INPUT type="radio" name="r_ab" id="r_b" value="b" onclick="r_ab_click();">
    adesso devi aggiungere la funzione client r_ab_click

    ma, che cosa devi visualizzare e nascondere?
    Dipende da che cosa rende asp.net: nel mio caso il controllo <asp:CheckBoxList è reso con una tabella, perciò la funzione sarà:
    codice:
    function r_ab_click()
    {
    	if(document.Form1.r_a.checked)
    	{
    		document.getElementById("CheckBoxListA").style.visibility = "hidden";
    		document.getElementById("CheckBoxListB").style.visibility = "visible";
    	}
    	else
    	{
    		document.getElementById("CheckBoxListA").style.visibility = "visible";
    		document.getElementById("CheckBoxListB").style.visibility = "hidden";
    	}
    	
    }
    Questo almeno che, ubbidendo ad una logica contorta ma rispettabilissima, tu non voglia rimandare sempre, anche con una connessione ultralenta, la pagina al server per riprocessarla. In questo caso puoi utilizzare la proprietà Visible per il controllo...

    Ciao
    Pietro

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Mi correggo, il mio Visual Studio 2003 dà i numeri.
    Puoi usare come radio i controlli server asp:radiobutton

    Nel load aggiungi l'attributo:
    codice:
                Me.RadioButtonA.Attributes.Add("onclick", "r_ab_click();")
                Me.RadioButtonB.Attributes.Add("onclick", "r_ab_click();")

    la funzione r_ab_click, o la scrivi nella pagina o usi RegisterClientScriptBlock
    Pietro

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    69
    andrea70 scrive:-La gestione della visibilità di un oggetto di una pagina aspx è molto semplice e non occorre usare js.
    Esiste un evento SelectedIndexChanged che scatta quando viene selezionato un valore del radiobutton, dentro quell'evento puoi gestire la visibilità delle checkboxlist.

    Già, volendo posso anche includere un autopostback, ma il mio problema sta proprio nel controllo della visibilità, quale elememento al riguardo fa parte della checkboxlistitem?



    Pietro09 scrive:function r_ab_click()
    {
    if(document.Form1.r_a.checked)
    {
    document.getElementById("CheckBoxListA").style.vis ibility = "hidden";
    document.getElementById("CheckBoxListB").style.vis ibility = "visible";
    }
    else
    {
    document.getElementById("CheckBoxListA").style.vis ibility = "visible";
    document.getElementById("CheckBoxListB").style.vis ibility = "hidden";
    }

    }



    ok, posso usare questo script, ma come faccio a vedere la mia checkboxlist che cambia stato senza un evento server?


    javascript:smilie('')
    Arrampicata

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Non uso eventi server:
    pagina aspx
    codice:
    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="a.aspx.vb" Inherits="corso_apogeo.a"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    	<HEAD>
    		<title>a</title>
    		<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
    		<meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
    		<meta content="JavaScript" name="vs_defaultClientScript">
    		<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    		<script language="javascript">
    <!--
    function r_ab_click()
    {
    	if(document.getElementById("RadioButtonA").checked)
    	{
    		document.getElementById("CheckBoxListA").style.visibility = "hidden";
    		document.getElementById("CheckBoxListB").style.visibility = "visible";
    	}
    	else
    	{
    		document.getElementById("CheckBoxListA").style.visibility = "visible";
    		document.getElementById("CheckBoxListB").style.visibility = "hidden";
    	}
    	
    }
    //-->
    		</script>
    	</HEAD>
    	<body MS_POSITIONING="FlowLayout">
    		<form id="Form1" method="post" runat="server">
    			
    
    <asp:button id="Button1" runat="server" Text="Button"></asp:button></P>
    			
    
    <asp:radiobutton id="RadioButtonA" runat="server" Text="Radio A" GroupName="radio_a_b"></asp:radiobutton><asp:radiobutton id="RadioButtonB" runat="server" Text="Radio B" GroupName="radio_a_b"></asp:radiobutton></P>
    			
    
    <INPUT id="r_a" onclick="r_ab_click();" type="radio" value="a" name="r_ab"><INPUT id="r_b" onclick="r_ab_click();" type="radio" value="b" name="r_ab">
    			</p>
    			
    
    
    				<table>
    					<tr>
    						<td><asp:checkboxlist id="CheckBoxListA" runat="server"></asp:checkboxlist></td>
    						<td><asp:checkboxlist id="CheckBoxListB" runat="server"></asp:checkboxlist></td>
    					</tr>
    				</table>
    			</P>
    		</form>
    	</body>
    </HTML>

    codice sottostante:
    codice:
        Private Sub RadioButtonA_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles RadioButtonA.Init
            Dim r As System.Web.UI.WebControls.RadioButton = DirectCast(sender, System.Web.UI.WebControls.RadioButton)
            r.Attributes.Add("onclick", "r_ab_click();")
    
    
        End Sub
    
        Private Sub RadioButtonB_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles RadioButtonB.Init
            Dim r As System.Web.UI.WebControls.RadioButton = DirectCast(sender, System.Web.UI.WebControls.RadioButton)
            r.Attributes.Add("onclick", "r_ab_click();")
        End Sub


    Ti ho fatto vedere come ti conviene utilizzare un <input type radio piuttosto che un <asp:radiobutton

    se vuoi, e forse è meglio, metti per esempio

    <div id="divA"><asp:checkboxlist /></div>

    e renti visibile/invisibile divA e divB

    l' <asp:button l'ho messo solo per collaudo, nel contesto non serve

    ciao
    Pietro

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    69
    scusami Pietro,
    ma senza un evento immediato, come faccio nel mio form a visualizzare subito la parte che dovrà essere disabilitata?

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da zenzot
    scusami Pietro,
    ma senza un evento immediato, come faccio nel mio form a visualizzare subito la parte che dovrà essere disabilitata?
    Non ti capisco, cosa vuole dire visualizzare subito la parte che dovrà essere disabilitato?
    Almeno che alla partenza, un radio sia selezionato e di conseguenza la lista pertinente sia visualizzata???
    Pietro

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    69
    Si, a chi mi compilerà il form dovrò dare la possibilità di selezionare il radio A oppure B, e con un autopostback cambiare lo stato di visibilità delle checkboxlist relative.
    Cmq stavo provando il tuo ultimo esempio e mi genera il seguente errore alla riga 5: La clausola Handles richiede una variabile WithEvents.

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da zenzot
    Si, a chi mi compilerà il form dovrò dare la possibilità di selezionare il radio A oppure B, e con un autopostback cambiare lo stato di visibilità delle checkboxlist relative.
    Cmq stavo provando il tuo ultimo esempio e mi genera il seguente errore alla riga 5: La clausola Handles richiede una variabile WithEvents.
    Mi pare che ti stia contraddicendo Se devi fare un autopostback, cioè se devi mandare al server la pagina ogni volta che l'utente seleziona un radio, che ti serve javascript? Se invece vuoi non andare al server, puoi fare come ti ho detto.
    Se vuoi che alla partenza della pagina sia selezionato il radio A, per esempio, nell'evento load della pagina (client però) puoi mettere:

    document.getElementById("RadioButtonA").checked = true;
    r_ab_click();


    oppure, metti:
    <asp:radiobutton id="RadioButtonA" runat="server" Text="Radio A" GroupName="radio_a_b" Checked="true"/>
    e
    <asp:checkboxlist id="CheckBoxListB" runat="server" style="visibility:hidden;"/>

    Per quanto riguarda il mio esempio, non ti ho dato tutto il codice
    codice:
    Public Class a
        Inherits System.Web.UI.Page
    
    #Region " Codice generato da Progettazione Web Form "
    
        'Chiamata richiesta da Progettazione Web Form.
        <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
    
        End Sub
        Protected WithEvents RadioButtonA As System.Web.UI.WebControls.RadioButton
        Protected WithEvents RadioButtonB As System.Web.UI.WebControls.RadioButton
        Protected WithEvents CheckBoxListA As System.Web.UI.WebControls.CheckBoxList
        Protected WithEvents CheckBoxListB As System.Web.UI.WebControls.CheckBoxList
        Protected WithEvents Button1 As System.Web.UI.WebControls.Button
    
        'NOTA: la seguente dichiarazione è richiesta da Progettazione Web Form.
        'Non spostarla o rimuoverla.
        Private designerPlaceholderDeclaration As System.Object
    
        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
            If Not Me.IsPostBack Then
                Dim dt As DataTable = Libreria.GetDataTable(StringaConnessione, "select codice_istat_regione, nome_regione from regioni")
                Me.CheckBoxListA.DataSource = dt
                Me.CheckBoxListA.DataTextField = "nome_regione"
                Me.CheckBoxListA.DataValueField = "codice_istat_regione"
                Me.CheckBoxListA.DataBind()
    
                Me.CheckBoxListB.DataSource = dt
                Me.CheckBoxListB.DataTextField = "nome_regione"
                Me.CheckBoxListB.DataValueField = "codice_istat_regione"
                Me.CheckBoxListB.DataBind()
    
    
    
            End If
        End Sub
    
        Private Sub RadioButtonA_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles RadioButtonA.Init
            Dim r As System.Web.UI.WebControls.RadioButton = DirectCast(sender, System.Web.UI.WebControls.RadioButton)
            r.Attributes.Add("onclick", "r_ab_click();")
    
    
        End Sub
    
        Private Sub RadioButtonB_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles RadioButtonB.Init
            Dim r As System.Web.UI.WebControls.RadioButton = DirectCast(sender, System.Web.UI.WebControls.RadioButton)
            r.Attributes.Add("onclick", "r_ab_click();")
        End Sub
    
    End Class
    Pietro

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.