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,这样您才能真正只加载+运行一次加载组合框的代码。
您没有展示您的标记,但请记住,任何按钮点击、具有自动回发的控件或页面上的任何事件触发都会重新运行页面加载事件。
因此,理论上,即使只是一个简单的按钮点击,也可能会重新运行加载组合框的代码。因此,每个事件,每次点击都可能会再次添加或加载组合框。
因此,几乎每个页面的设计模式都是只加载一次网格、列表框、下拉框等。
因此,您的代码应该如下所示:
因此,请确保您的页面加载代码具有非常重要的 If Not IsPostBack,这样您才能真正只加载+运行一次加载组合框的代码。
因此,这个“是回发”测试?你的99%页面都会这样工作。我经常认为asp.net页面应该有一个“firstLoad”事件,因为页面加载每次都会触发,对于任何按钮和触发页面回发的任何代码都是如此。因此,您的组合框将一次又一次地加载(并增长),因为您每次加载页面时都会运行加载网格、列表框或下拉列表的代码。因此,请采用、使用和“喜欢”IsPostBack测试-您对所有页面都要这样做,而且99%甚至更多的页面都需要进行这个测试。
事实上,如果您不采用上述建议,您几乎无法构建任何功能性的网页。