Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    come far coesistere più di un webcontrol sullo stesso form utilizzando i validatori

    ok, è da 10 giorni che sono su asp.net, e mi sto divertendo gingillandomi con varie funzioni, sub, cicli, dichiarazioni, ma soprattutto I FORM...
    ora, non si possono inserire + form nella stessa pagina...tuttavia un campo di testo, un repeater, una dropdownlist non possono esistere al di fuori di un form...

    sto sviluppando un'applicazione che fa in modo che
    un utente qualsiasi:
    - visualizza la classifica di una gara in una tabella generata da un repeater che va a beccarsi i dati da un db access
    l'amministratore del sito:
    -visualizza la stessa classifica
    -visualizza un pannello "pnlAdmin" all'interno dello stesso form del repeater

    il pannello dell'admin permette di:
    -modificare la classifica aggiungendo e sottraendo record al db

    il modulo di inserimento dati del pannello dell'admin :
    -permette di inserire i dati
    -controlla tramite dei requiredfieldvalidator che i campi di testo siano compilati

    il comando per eliminare i record:
    -visualizza i record in una dropdownlist che si popola dei dati del db


    ora il problema principale è il seguente:
    i requiredfieldvalidator controllano che i campi di testo siano validi e fanno in modo che quando si clicca sul bottone "aggiungi" compaiano le etichette che avvertono l'utente che il campo è obbligatorio.
    il modulo che permette di eliminare i record scegliendoli dalla droplist risiede sullo stesso form dei textbox controllati dai requiredfieldvalidator....a questo punto, quando si va a cliccare sul pulsante "elimina" IN TEORIA la sub richiamata andrebbe a prendere il record selezionato nella drop e si appresterebbe a cancellarlo dal db...TUTTAVIA NON LO FA!E IN PIU' MI ESCONO LE ETICHETTE ROSSE DEI CAMPI OBBLIGATORI CHE IMPEDISCONO AL FORM DI ESSERE INVIATO!
    .................................................. ..............
    posto il codice sperando che qualcuno ne capisca piu' di me... :master:
    codice:
    <%@ Page Language="VB" Debug="true" %>
    <%@ import Namespace="System.Data.OleDb" %>
    <%@ import Namespace="System.Data" %>
    <script runat="server">
    
        'CARICAMENTO PAGINA
        sub Page_Load
        startRepeater
        end sub
        'REPEATER CLASSIFICA
        sub startRepeater
        Dim conCiccio As OleDbConnection
        Dim cmdSelectCiccio As OleDbCommand
        Dim dtrClassifica As OleDbDataReader
        conCiccio = New OleDbConnection( "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source="& Server.MapPath("mdb-database\ciccio.mdb") )
        conCiccio.Open()
        cmdSelectCiccio = New OleDbCommand( "Select * From Tabella1 Order By posizione", conCiccio )
        dtrClassifica = cmdSelectCiccio.ExecuteReader()
        rptTabella.DataSource = dtrClassifica
        rptTabella.DataBind()
        dtrClassifica.Close()
        conCiccio.Close()
        end sub
        
        'BOTTONE RESETTA CAMPI INSERIMENTO CONCORRENTI
        sub btnClick_Pulisci(s as Object, e as EventArgs)
        dim strNull as string
        strNull = ""
        txtPosizione.text = strNull
        txtNumero.text = strNull
        txtCodice.text = strNull
        txtConcorrente.text = strNull
        txtLb.text = strNull
        txtAa.text = strNull
        txtCr.text = strNull
        txtSocieta.text = strNull
        txtFinale.text = strNull
        txtGara.text = strNull
        txtGrad.text = strNull
        end sub
        
        'BOTTONE AGGIUNTA CONCORRENTI AL DATABASE
        sub btnClick_Aggiungi(s as Object, e as EventArgs)
        if IsValid then
        Dim conCiccio As OleDbConnection
        Dim strInsert As String
        Dim cmdInsert As OleDbCommand
        conCiccio = New OleDbConnection( "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source="& Server.MapPath("mdb-database\ciccio.mdb") )
        strInsert = "Insert Into Tabella1 ( posizione, numero, codice, concorrente, lb, aa, cr, societa, finale, gara, grad ) Values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )"
        cmdInsert = New OleDbCommand( strInsert, conCiccio )
        cmdInsert.Parameters.Add( "@posizione", txtPosizione.text )
        cmdInsert.Parameters.Add( "@numero", txtNumero.text )
        cmdInsert.Parameters.Add( "@codice", txtCodice.text )
        cmdInsert.Parameters.Add( "@concorrente", txtConcorrente.text )
        cmdInsert.Parameters.Add( "@lb", txtLb.text )
        cmdInsert.Parameters.Add( "@aa", txtAa.text )
        cmdInsert.Parameters.Add( "@cr", txtCr.text )
        cmdInsert.Parameters.Add( "@societa", txtSocieta.text )
        cmdInsert.Parameters.Add( "@finale", txtFinale.text )
        cmdInsert.Parameters.Add( "@gara", txtGara.text )
        cmdInsert.Parameters.Add( "@grad", txtGrad.text )
        conCiccio.Open()
        cmdInsert.ExecuteNonQuery()
        conCiccio.Close()
        startRepeater
        end if
        end sub
        
        'ADMIN MODE - ENTRATA E USCITA
        sub click_btnAdminMode(s as Object, e as EventArgs)
        dim admin_status as boolean
        admin_status = pnlAdmin.Visible
        if not admin_status then
        pnlAdmin.Visible = true
        popolaDropElimina
        elseif admin_status then
        pnlAdmin.Visible = false
        end if
        end sub
        
        'BOTTONE ELIMINA CONCORRENTE SELEZIONATO NELLA DROPDOWNLIST DAL DATABASE
        sub btnClick_Elimina(s as Object, e as EventArgs)
        Dim conCiccio As OleDbConnection
        Dim strDelete As String
        Dim cmdDelete As OleDbCommand
        conCiccio = New OleDbConnection( "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source="& Server.MapPath("mdb-database\ciccio.mdb") )
        strDelete = "DELETE FROM Tabella1 WHERE concorrente=@concorrente"
        cmdDelete = New OleDbCommand( strDelete, conCiccio )
        cmdDelete.Parameters.Add( "@concorrente", dropElimina.SelectedItem.Value )
        conCiccio.Open()
        cmdDelete.ExecuteNonQuery()
        conCiccio.Close()
        startRepeater
        popolaDropElimina
        end sub
        
        'POPOLAMENTO DELLA DROPDOWNLIST CHE ELIMINA I CONCORRENTI DAL DATABASE
        sub popolaDropElimina
        Dim conCiccio As OleDbConnection
        Dim cmdSelectCiccio As OleDbCommand
        Dim dtrDropElimina As OleDbDataReader
        conCiccio = New OleDbConnection( "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source="& Server.MapPath("mdb-database\ciccio.mdb") )
        cmdSelectCiccio = New OleDbCommand( "Select concorrente From Tabella1 Order By concorrente", conCiccio )
        conCiccio.Open()
        dtrDropElimina = cmdSelectCiccio.ExecuteReader()
        dropElimina.DataSource = dtrDropElimina
        dropElimina.DataTextField = "concorrente"
        dropElimina.DataBind()
        dtrDropElimina.Close()
        conCiccio.Close()
        end sub
    
    </script>
    <html>
    <head>
        <link href="sciclub.css" type="text/css" rel="stylesheet" />
    </head>
    <body>
        <form runat="server">
            <asp:repeater id="rptTabella" runat="server" EnableViewState="False">
                <ItemTemplate>
                    <tr>
                        <td align="center">
                            <%#Container.DataItem("posizione")%></td>
                        <td align="center">
                            <%#Container.DataItem("numero")%></td>
                        <td align="center">
                            <%#Container.DataItem("codice")%></td>
                        <td align="center">
                            <%#Container.DataItem("concorrente")%></td>
                        <td align="center">
                            <%#Container.DataItem("lb")%></td>
                        <td align="center">
                            <%#Container.DataItem("aa")%></td>
                        <td align="center">
                            <%#Container.DataItem("cr")%></td>
                        <td align="center">
                            <%#Container.DataItem("societa")%></td>
                        <td align="center">
                            <%#Container.DataItem("finale")%></td>
                        <td align="center">
                            <%#Container.DataItem("gara")%></td>
                        <td align="center">
                            <%#Container.DataItem("grad")%></td>
                    </tr>
                </ItemTemplate>
                <AlternatingItemTemplate>
                    <tr bgcolor="#CCFFFF">
                        <td align="center">
                            <%#Container.DataItem("posizione")%></td>
                        <td align="center">
                            <%#Container.DataItem("numero")%></td>
                        <td align="center">
                            <%#Container.DataItem("codice")%></td>
                        <td align="center">
                            <%#Container.DataItem("concorrente")%></td>
                        <td align="center">
                            <%#Container.DataItem("lb")%></td>
                        <td align="center">
                            <%#Container.DataItem("aa")%></td>
                        <td align="center">
                            <%#Container.DataItem("cr")%></td>
                        <td align="center">
                            <%#Container.DataItem("societa")%></td>
                        <td align="center">
                            <%#Container.DataItem("finale")%></td>
                        <td align="center">
                            <%#Container.DataItem("gara")%></td>
                        <td align="center">
                            <%#Container.DataItem("grad")%></td>
                    </tr>
                </AlternatingItemTemplate>
                <HeaderTemplate>
                    <table width="750" border="0" align="center" cellpadding="0" cellspacing="2">
                        <tr bgcolor="#b3d9ff">
                            <th>
                                Posizione</th>
                            <th>
                                Numero</th>
                            <th>
                                Codice</th>
                            <th>
                                Concorrente</th>
                            <th>
                                L.B.</th>
                            <th>
                                A.A.</th>
                            <th>
                                C.R.</th>
                            <th>
                                Società</th>
                            <th>
                                Finale</th>
                            <th>
                                Gara</th>
                            <th>
                                Grad.</th>
                        </tr>
                </HeaderTemplate>
                <FooterTemplate>
                    <td colspan="11" align="center" bgcolor="#b3d9ff">
                        <font size="1" face="Verdana, Arial, Helvetica, sans-serif"><a href="http://www.nextskin.it" target="_blank">powered
                        by Nextskin</a></font></td>
                    </table>
                </FooterTemplate>
            </asp:repeater>
            
    
            <hr />
            
    
            <asp:panel id="pnlAdmin" runat="server" Visible="false">
                
    
                Posizione:
    
                <asp:textbox id="txtPosizione" runat="server"></asp:textbox>
                
    
                Numero:
    
                <asp:textbox id="txtNumero" runat="server"></asp:textbox>
                
    
                Codice:
    
                <asp:textbox id="txtCodice" runat="server"></asp:textbox>
                
    
                Concorrente:
    
                <asp:textbox id="txtConcorrente" runat="server"></asp:textbox>
                
    
                LB:
    
                <asp:textbox id="txtLb" runat="server"></asp:textbox>
                
    
                AA:
    
                <asp:textbox id="txtAa" runat="server"></asp:textbox>
                
    
                CR:
    
                <asp:textbox id="txtCr" runat="server"></asp:textbox>
                
    
                Società:
    
                <asp:textbox id="txtSocieta" runat="server"></asp:textbox>
                
    
                Finale:
    
                <asp:textbox id="txtFinale" runat="server"></asp:textbox>
                
    
                Gara:
    
                <asp:textbox id="txtGara" runat="server"></asp:textbox>
                
    
                Grad:
    
                <asp:textbox id="txtGrad" runat="server"></asp:textbox>
                
    
                <asp:button id="btnAggiungi" onclick="btnClick_Aggiungi" runat="server" Text="Aggiungi Concorrente"></asp:button>
                 
                <asp:button id="btnPulisci" onclick="btnClick_Pulisci" runat="server" Text="Pulisci i Campi"></asp:button>
                <hr />
                
    
                Seleziona il Concorrente da eliminare:
    
                <asp:DropDownList id="dropElimina" runat="server" Width="160px"></asp:DropDownList>
                
    
                <asp:button id="btnElimina" onclick="btnClick_Elimina" runat="server" Text="Elimina ID"></asp:button>
                
    
                <hr />
                
    
            </asp:panel>
            <asp:button id="btnAdminMode" onclick="click_btnAdminMode" runat="server" Text="admin mode"></asp:button>
        </form>
    </body>
    </html>
    deppiù ninzò...
    -pigiuz-
    "se proprio deve piovere merda voglio almeno sapere da che parte tira il vento" Robert Redford - Spy Game

  2. #2
    ho trovato l'inghippo!
    <asp:button text="nome" onClick="nome_sub" CausesValidation = false runat="server"/>

    ma nel caso avessi avuto un campo di testo anzichè una dropdownlist? come facevo a controllare che non fosse vuoto senza attivare anche i controlli degli altri textbox ?

    mah.... :master:
    -pigiuz-
    "se proprio deve piovere merda voglio almeno sapere da che parte tira il vento" Robert Redford - Spy Game

  3. #3
    con causesvalidation pero indichi che la pagina non deve essere validata con quel pulsante di submit (e non verrà applicato nessun validatore). L'unico modo per abilitare validatori diversi per pulsanti diversi è javascript. io uso questo script:
    codice:
    <script language="javascript" src="navigation/js/page_functions.js">
    </script>
    ...
    <asp:Button id="ButtonChangePassword" runat="server" Text="Change Password" OnFocus="javascript:Focus_ChangePassword_Click();"/>
    ...
    
    <script language="javascript">
    //qui mi creo un array con tutti i validatori abilitati per questo pulsante. Attenzione perchè i nomi dei validatori devono essere quelli lato client
    	var changePasswordValidator=new Array(document.all["changePassword_rfvPasswordOld"],document.all["changePassword_rfvPassword"],document.all["changePassword_cvConfirmPassword"]);
    	function Focus_ChangePassword_Click()
    	{
    		Enabled_Validators(changePasswordValidator);
    	}
    </script>
    codice di page_functions.js. la funzione abilita solo i validatori contenuti nell'array passato.
    codice:
    	function Enabled_Validators(ArrValidators)
    	{
    		var i;
    		var j;
    		var valOK;
    		for (i=0;i<Page_Validators.length;i++) 
    		{
    			valOK=false;
    			for (j=0;j<ArrValidators.length;j++)
    			{
    				if (Page_Validators[i]==ArrValidators[j]){valOK=true;j=ArrValidators.length;}
    			}
    			ValidatorEnable(Page_Validators[i],valOK);
    		}
    	}

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 © 2026 vBulletin Solutions, Inc. All rights reserved.