防止ASP.NET VB.NET中下拉列表复制项目的方法
P粉299174094
P粉299174094 2023-09-07 09:26:11
0
1
338

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粉299174094
P粉299174094

全部回复(1)
P粉883973481

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

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

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

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

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%甚至更多的页面都需要进行这个测试。

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!