我有一段非常简单的代码,但TextChanged事件不会触发。我在没有UpdateMode,ChildrenAsTriggers和Triggers的情况下尝试过它。正如你所看到的,我已经尝试过了。似乎还没有开火。
期望:当我从CalendarExtender中选择日期时,会触发TextChanged事件。现在,当我这样做时,我知道Page_Loads会发生火灾。我知道当我没有在我的页面上安装UpdatePanel时会触发它。
我正在使用Webforms ASP.NET 4.5,Visual Studio 2012。
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Test.aspx.vb" Inherits="Test" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Test</title>
<link rel="stylesheet" href="CSS/Test.css" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<AjaxToolkit:ToolkitScriptManager ID="ajaxTSM1" runat="server">
</AjaxToolkit:ToolkitScriptManager>
<div>
<asp:UpdatePanel runat="server" ID="TestUP" UpdateMode="Conditional" ChildrenAsTriggers="true">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="txtDate" EventName="TextChanged" />
</Triggers>
<ContentTemplate>
<div>
<br/ /><br />
<table>
<tr>
<td style="padding-right:20px;">Header1</td>
<td>Header2</td>
</tr>
<tr>
<td>
<asp:TextBox ID="txtDate" ReadOnly="true" runat="server" Width="100px" AutoPostBack="True"></asp:TextBox>
<ajaxToolkit:CalendarExtender ID="ceDate" runat="server" TargetControlID="txtDate" />
</td>
<td></td>
</tr>
</table>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
背后的代码
Partial Class Test
Inherits System.Web.UI.Page
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not IsPostBack Then
txtDate.Text = DateTime.Now.ToShortDateString
End If
If IsPostBack Then
End If
End Sub
Protected Sub txtDate_TextChanged(sender As Object, e As EventArgs) Handles txtDate.TextChanged
txtDate.Text = Request(txtDate.UniqueID)
End Sub
End Class
答案 0 :(得分:0)
我注意到您为TextBox指定了ReadOnly="true"
。在这种情况下,我不希望任何TextChanged事件。
请参阅ReadOnly in the MSDN docs
的说明