【问题标题】:ASP update textbox after typing in it输入后 ASP 更新文本框
【发布时间】:2019-12-18 14:30:01
【问题描述】:

我在一个 asp 页面上有一个文本框。这个文本框充满了来自数据库的电子邮件,在文本框中每行打印出一封电子邮件,每行由 vbCrLf 分隔以使其正常工作。文本框是可写的,因此人们可以输入更多电子邮件或删除该列表中的电子邮件。更改电子邮件列表后,会出现一个保存按钮,该按钮应读取新的电子邮件列表并将其发回。

但是,在文本框中输入一封新电子邮件或从文本框中删除一封电子邮件后,我点击了保存按钮,并且在其后面的代码中仍将文本框的文本读取为原始文本而没有更改。我不知道为什么,因为代码仅在我进行更改后运行,所以当我调用 emailBox.Text (我的文本框)时,它应该查找文本框中的任何文本,对吗?任何和所有的帮助将不胜感激。

这是我的代码:

VB:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Try
            emailBox.Text = ""
            Dim tempstoreID As Integer = 101
            Dim ds As DataSet
            Dim emailList As String = ""
            ds = DBUtility.GetKisokAlertEmails(tempstoreID)
            If Not ds Is Nothing AndAlso ds.Tables.Count > 0 And ds.Tables(0).Rows.Count > 0 Then
                For Each dr In ds.Tables(0).Rows
                    emailList = dr("EmailList")
                Next
            End If
            Dim seperatedEmailList() As String
            seperatedEmailList = Split(emailList, ";")
            For Each email As String In seperatedEmailList
                emailBox.Text &= email & vbCrLf
            Next

        Catch ex As Exception
            Dim tempstoreID As Integer = 101
            LogUtility.LogMessage("Error in getting and parsing email list from database. " & ex.ToString, LogUtility.INFO_MESSAGE, tempstoreID)
        End Try
    End Sub

Protected Sub SaveButton(sender As Object, e As EventArgs)
        Dim newEmailList() As String
        newEmailList = Split(emailBox.Text, vbCrLf)
        Dim regexExpression As New Regex("^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$")

        Dim valid As Boolean
        Dim errorEmail As String = "Nope"

        Dim counter As Integer = 0
        While counter < newEmailList.Length - 1
            If (regexExpression.IsMatch(newEmailList(counter))) Then
                valid = True
                counter += 1
            Else
                valid = False
                errorEmail = newEmailList(counter)
                Exit While
            End If

        End While

    End Sub

平均售价:

<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:Label ID="label1" Text="List Of Emails" runat="server" /> <br />
            <asp:TextBox ID="emailBox" TextMode="MultiLine" Text="" AutoPostBack="true" runat="server" />
            <br/><br/>
            <asp:Button Text="Save" OnClick="SaveButton" runat="server" />
            <asp:Button Text="Cancel" runat="server" />
            <br />
            <asp:Label ID="TestLabel" Text = "Hi" runat="server"/>
            <br />
            <asp:Label ID="TestLabel2" Text ="howdy" runat="server" />
            <br />
            <asp:Label ID="TestLabel3" Text = "emails" runat="server" />
        </div>
    </form>
</body>
</html>

【问题讨论】:

    标签: asp.net vb.net textbox


    【解决方案1】:

    当您单击 button 保存时,首先执行 Form1_Load,然后执行 SaveButton 函数,这就是您拥有旧数据的原因。所以你需要把你的 Form1_Load 代码放在 PostBack 中:

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
       if not IsPostBack then
           //your code
       end if
    
    End Sub
    

    您可以查看this post关于回发的信息。

    【讨论】:

    • 您好,感谢您的帮助!当我尝试将此添加到 form1_load 时,“if(!IsPostBack) then”行出现错误,因为它显示“Leading '。”或者 '!'只能出现在“With”语句中
    猜你喜欢
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 2012-12-31
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    相关资源
    最近更新 更多