recherche

Maison  >  Questions et réponses  >  le corps du texte

Méthode pour empêcher la liste déroulante de dupliquer des éléments dans ASP.NET VB.NET

Public Sub Table()      
    Dim Connection As MySqlConnection

    Dim DataAdapter As MySqlDataAdapter
    Dim Command As MySqlCommand
    Connection = New MySqlConnection("server=localhost; userid=root; database=setting;")
    Command = New MySqlCommand("Select * FROM table", 
    Connection)
    DataAdapter = New MySqlDataAdapter(Command)
    Dim DataTable As New DataSet
    DataAdapter.Fill(DataTable)
    Ddlname.DataSource = DataTable
    Ddlname.DataTextField = "Name"
    Ddlname.DataValueField = "Name"
    Ddlname.DataBind()
End Sub

P粉299174094P粉299174094506 Il y a quelques jours569

répondre à tous(1)je répondrai

  • P粉883973481

    P粉8839734812023-09-08 00:04:54

    Vous n'affichez pas votre balisage, mais rappelez-vous que tout clic sur un bouton, tout contrôle avec publication automatique ou tout événement déclenché sur la page réexécutera l'événement de chargement de page.

    Donc, en théorie, même un simple clic sur un bouton peut réexécuter le code qui charge la liste déroulante. Ainsi, chaque événement, chaque clic peut ajouter ou charger à nouveau la liste déroulante.

    Par conséquent, le modèle de conception de presque chaque page consiste à charger les grilles, les zones de liste, les zones déroulantes, etc.

    Votre code devrait donc ressembler à ceci :

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            LoadTable()
        End If
    End Sub
    
    
    Public Sub LoadTable()
    
        Using Connection As New MySqlConnection("server=localhost; userid=root; database=setting;")
    
            Using Command As New MySqlCommand("SELECT * from table", Connection)
                Connection.Open
                Dim MyTable As New DataTable
                MyTable.Load(Command.ExecuteReader)
                Ddlname.DataSource = DataTable
                Ddlname.DataTextField = "Name"
                Ddlname.DataValueField = "Name"
                Ddlname.DataBind()
            End Using
        End Using
    
    End Sub

    Assurez-vous donc que le code de chargement de votre page contient le très important If Not IsPostBack afin que vous ne chargiez et n'exécutiez qu'une seule fois le code qui charge la liste déroulante.

    Donc, ce test "est une publication" ? 99% de vos pages fonctionneront de cette façon. Je pense souvent que les pages asp.net devraient avoir un événement "firstLoad" car il se déclenche à chaque chargement de la page, et cela est vrai pour tous les boutons et tout code qui déclenche les publications de pages. Par conséquent, votre liste déroulante se chargera (et grandira) encore et encore car vous exécutez le code qui charge la grille, la liste déroulante ou la liste déroulante à chaque fois que vous chargez la page. Alors adoptez, utilisez et « aimez » le test IsPostBack – vous le faites pour toutes vos pages, et 99 % ou plus d’entre elles l’exigent.

    En fait, il est presque impossible de créer une page Web fonctionnelle si vous n’appliquez pas les suggestions ci-dessus.

    répondre
    0
  • Annulerrépondre