0
我有一段非常簡單的代碼,但TextChanged事件不會觸發。我試過它沒有UpdateMode,ChildrenAsTriggers和觸發器。正如你所看到的,我已經嘗試過了。仍然似乎沒有火。爲什麼UpdatePanel阻止我的TextChanged事件觸發?
期望值:當我從CalendarExtender中選擇一個日期時,TextChanged事件觸發。現在我知道Page_Loads會在我這樣做時觸發。我知道它會在我的頁面上沒有UpdatePanel時觸發。
我使用Web表單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
的
見說明你有沒有在'Page_Load'設置斷點,看它是否是叫什麼名字?嘗試刪除'If Not IsPostBack Then txtDate.Text = DateTime.Now.ToShortDateString End If'。在屬性返回'false'(afaik)的異步回發中,因此您將覆蓋防止事件被觸發的文本。 –
嘗試將此添加到您的文本框標記:OnTextChanged =「txtDate_TextChanged」。 – N0Alias
@NoAlias:在VB.NET中不需要使用「處理txtDate.TextChanged」。 –