微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

单击按钮后,Page_Load不会更新

如何解决单击按钮后,Page_Load不会更新

| 我有一个简单的ASP.NET页:
sub Page_Load
    //Get data form databse and show it
end sub

sud deletsome(Source As Object,e As EventArgs)
    //delete one record when user click on submit button
end sub
当我单击按钮时,页面重新加载,所有数据都没有更改,我必须再次重新进入页面删除的记录消失。 你能告诉我为什么吗? 完整的代码在这里
<%@ Import Namespace=\"System.Data.OleDb\" %>

<script  runat=\"server\">

sub Page_Load
    dim dbconn,sql,dbcomm,dbread
    dbconn=New OleDbConnection(\"Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=False;data source=\" & server.mappath(\"/data/test.accdb\"))
    dbconn.open()
    sql=\"SELECT * FROM [user]\"
    dbcomm=New OleDbCommand(sql,dbconn)
    dbread=dbcomm.ExecuteReader()
    customers.DataSource=dbread
    customers.DataBind()
    dbread.Close()
    dbconn.Close()
end sub

sub deletesome(Source As Object,e As EventArgs)
    dim dbconn,dbcomm
    dbconn=New OleDbConnection(\"Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=False;data source=\" & server.mappath(\"/data/test.accdb\"))
    dbconn.open()
    sql=\"DELETE FROM [user]WHERE id = @ID\"
    dbcomm=New OleDbCommand(sql,dbconn)
    dbcomm.Parameters.AddWithValue(\"ID\",tb1.Text)
    dbcomm.ExecuteNonQuery()    
end sub
</script>

<html>
<body>

<form runat=\"server\">
    <asp:TextBox id=\"tb1\" runat=\"server\" />
    <asp:Button id=\"b1\" Text=\"Submit\" runat=\"server\" OnClick=\"deletesome\" />
    <asp:Repeater id=\"customers\" runat=\"server\">

        <HeaderTemplate>
            <table border=\"1\" width=\"100%\">
            <tr bgcolor=\"#b0c4de\">
                <th>ID</th>
                <th>Address</th>
                <th>City</th>
            </tr>
        </HeaderTemplate>

        <ItemTemplate>
            <tr bgcolor=\"#f0f0f0\">
                <td><%#Container.DataItem(\"id\")%> </td>
                <td><%#Container.DataItem(\"username\")%> </td>
                <td><%#Container.DataItem(\"userphone\")%> </td>
            </tr>
        </ItemTemplate>

        <FooterTemplate>
            </table>
        </FooterTemplate>

    </asp:Repeater>
</form>
<hr />

</body>
</html>
    

解决方法

        在ASP页面的生命周期中,页面加载发生在按钮单击之前(我知道,这很奇怪)。最简单的解决方法是将您的代码放置在页面“ PreRender \”事件中。     ,        在页面加载时使用if(!IsPostBack)。     ,        您尚未在页面加载事件中添加“ 2”条件。当您单击按钮时,将首先在click事件处理程序之前调用页面的load事件,它将再次重新加载数据。这就是问题所在。 应该像...
sub Page_Load
IF(!IsPostBack) \' This condition will be true when the page loads the first time 

dim dbconn,sql,dbcomm,dbread
dbconn=New OleDbConnection(\"Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=False;data source=\" & server.mappath(\"/data/test.accdb\"))
dbconn.Open()
sql=\"SELECT * FROM [user]\"
dbcomm=New OleDbCommand(sql,dbconn)
dbread=dbcomm.ExecuteReader()
customers.DataSource=dbread
customers.DataBind()
dbread.Close()
dbconn.Close()

EndIf
end sub
    ,        尝试这个
    <%@ Import Namespace=\"System.Data.OleDb\" %>

    <script  runat=\"server\">

    sub Page_Load
        If Page.IsPostBack = False Then
            LoadData()
    end sub

    sub deletesome(Source As Object,e As EventArgs)
        dim dbconn,dbcomm
        dbconn=New OleDbConnection(\"Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=False;data source=\" & server.mappath(\"/data/test.accdb\"))
        dbconn.Open()
        sql=\"DELETE FROM [user]WHERE id = @ID\"
        dbcomm=New OleDbCommand(sql,dbconn)
        dbcomm.Parameters.AddWithValue(\"ID\",tb1.Text)
        dbcomm.ExecuteNonQuery()  

        LoadData()  
    end sub

    sub LoadData
        dim dbconn,dbread
        dbconn=New OleDbConnection(\"Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=False;data source=\" & server.mappath(\"/data/test.accdb\"))
        dbconn.Open()
        sql=\"SELECT * FROM [user]\"
        dbcomm=New OleDbCommand(sql,dbconn)
        dbread=dbcomm.ExecuteReader()
        customers.DataSource=dbread
        customers.DataBind()
        dbread.Close()
        dbconn.Close()
    end sub
    </script>

    <html>
    <body>

    <form runat=\"server\">
        <asp:TextBox id=\"tb1\" runat=\"server\" />
        <asp:Button id=\"b1\" Text=\"Submit\" runat=\"server\" OnClick=\"deletesome\" />
        <asp:Repeater id=\"customers\" runat=\"server\">

            <HeaderTemplate>
                <table border=\"1\" width=\"100%\">
                <tr bgcolor=\"#b0c4de\">
                    <th>ID</th>
                    <th>Address</th>
                    <th>City</th>
                </tr>
            </HeaderTemplate>

            <ItemTemplate>
                <tr bgcolor=\"#f0f0f0\">
                    <td><%#Container.DataItem(\"id\")%> </td>
                    <td><%#Container.DataItem(\"username\")%> </td>
                    <td><%#Container.DataItem(\"userphone\")%> </td>
                </tr>
            </ItemTemplate>

            <FooterTemplate>
                </table>
            </FooterTemplate>

        </asp:Repeater>
    </form>
    <hr />

    </body>
    </html>
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。