ASP 输入后更新文本框
ASP update textbox after typing in it
我在 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
ASP:
<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>
当您单击 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 关于回发。
我在 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
ASP:
<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>
当您单击 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 关于回发。