首页  >  问答  >  正文

防止ASP.NET VB.NET中下拉列表复制项目的方法

rree

P粉299174094P粉299174094409 天前498

全部回复(1)我来回复

  • P粉883973481

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

    您没有展示您的标记,但请记住,任何按钮点击、具有自动回发的控件或页面上的任何事件触发都会重新运行页面加载事件。

    因此,理论上,即使只是一个简单的按钮点击,也可能会重新运行加载组合框的代码。因此,每个事件,每次点击都可能会再次添加或加载组合框。

    因此,几乎每个页面的设计模式都是只加载一次网格、列表框、下拉框等。

    因此,您的代码应该如下所示:

    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

    因此,请确保您的页面加载代码具有非常重要的 If Not IsPostBack,这样您才能真正只加载+运行一次加载组合框的代码。

    因此,这个“是回发”测试?你的99%页面都会这样工作。我经常认为asp.net页面应该有一个“firstLoad”事件,因为页面加载每次都会触发,对于任何按钮和触发页面回发的任何代码都是如此。因此,您的组合框将一次又一次地加载(并增长),因为您每次加载页面时都会运行加载网格、列表框或下拉列表的代码。因此,请采用、使用和“喜欢”IsPostBack测试-您对所有页面都要这样做,而且99%甚至更多的页面都需要进行这个测试。

    事实上,如果您不采用上述建议,您几乎无法构建任何功能性的网页。

    回复
    0
  • 取消回复