我有一个简单的aspx文件
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="test4.aspx.vb" Inherits="test4" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<form id="form1" runat="server">
<div id="content">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</div>
</form>
</body>
</html>
这是test4.aspx.vb代码文件
Partial Class test4
Inherits System.Web.UI.Page
Protected Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
TextBox2.Text = TextBox1.Text
End Sub
End Class
现在的问题是,即使我在textBox1中键入了一些textchanged事件,如果没有触发为什么??我该怎么办?
答案 0 :(得分:25)
您需要在TextBox上启用导致该事件的AutoPostBack
。
代码问题是它试图调用客户端事件的服务器端事件。需要在TextBox1
中输入文字,然后才会生成AutoPostBack
。
<asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True"></asp:TextBox>
根据您的需要而定。最好使用JavaScript将TextBox2
的值与TextBox1
一起填充。
答案 1 :(得分:3)
您的TextBox是服务器控件,更改的文本是服务器事件。每次键入一个字母时都不会触发它,而是如果文本值与上一次服务器回发时的值不同则触发它。
如果每次按下一个字母都需要运行某种代码,则需要使用VB注册和处理客户端事件OnKeyUp
/ OnKeyDown
/ OnKeyPress
或JavaScript编程。
答案 2 :(得分:1)
在你的.Aspx上,添加你的TextBox:
OnTextChanged="TextBox1_TextChanged"
答案 3 :(得分:0)
我知道我参加派对的时间已经很晚了,但我仍然想讲述我的故事。
我在只读TextBox上有一个文本更改事件处理程序。
JavaScript将TextBox更改为读/写,但事件不会触发。可能是因为后端仍然认为它是只读的。
我通过将R / O和R / W之间的所有更改移动到后端来解决问题。现在它有效。