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

    asp.net vb.net polimorfismo for each....

    Buongiorno a tutti forumisti.

    Ho cominciato da poco ad usare ASP.net.

    Leggendo la guida di vb.net ho notato che tratta del polimorfismo:



    Dim controllisulform as control
    For Each controllisulform in me.controls
    if controllisulform.text<>"" then
    MSGBOX("COMPILARE TUTTI I CAMPI OBBLIGATORI")
    end if
    next
    Però non riesco ad applicare tale codice in ambiente ASP .net.

    In pratica devo controllare se tutti i campi con il meodo "TEXT" sono stati completati per fare la chiamata al database!

    Conto su dei buoni consigli.



    jabjoint

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Per quanto riguarda il "polimorfismo" non mi tornano i conti.
    http://aspnet.html.it/guide/lezione/1365/polimorfismo/ nel link si può trovare una definizione di polimorfismo.

    Per quanto riguarda i campi obbligatori ti consiglio di guardarti la parte che riguarda i controlli di validità, in special modo il RequiredFieldValidator e il ValidationSummary e comunque quel codice mi pare un po' sbagliato: provo a controllare
    Pietro

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    allora, quel codice è sbagliato.

    il codice corretto con l'esempio è questo:
    codice:
    <%@ Page Language="VB" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
    
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
            For Each controllisulform As Control In Me.div1.Controls
                'PrintLn(controllisulform.GetType().ToString())
                If TypeOf controllisulform Is TextBox Then
                    Dim tb As TextBox = DirectCast(controllisulform, TextBox)
                    If tb.Text.Trim().Length = 0 Then
                        Me.Label1.Text = "COMPILARE TUTTI I CAMPI OBBLIGATORI"
                    End If
                    
                End If
            Next
        End Sub
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Pagina senza titolo</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div id="div1" runat="server">
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            
    
            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
            
    
            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
            
    
            <asp:Label ID="Label1" runat="server" Text="" EnableViewState="false"></asp:Label>
        </div>
        </form>
    </body>
    </html>
    come vedi, l'insieme controls, contiene tutti i controlli figli di primo livello, non quelli annidati più internament. E siccome i TextBox sono dentro un div, uso
    For Each controllisulform As Control In Me.div1.Controls
    invece di
    For Each controllisulform As Control In Me.Controls

    Inoltre, i controlli possono essere di più tipi. Il generico Control non ha la proprietà Text.
    Perciò, prima si vede se il controllo è di tipo TextBox, poi si fa necessariamente il Cast e finalmente si mette l'avviso in una label, non in MSGBOX, che non esiste.

    Pietro

  4. #4
    ti ringrazio tanto l' ho provato e funziona
    jabjoint

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.