2013-12-13 87 views
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 
+0

見說明你有沒有在'Page_Load'設置斷點,看它是否是叫什麼名字?嘗試刪除'If Not IsPostBack Then txtDate.Text = DateTime.Now.ToShortDateString End If'。在屬性返回'false'(afaik)的異步回發中,因此您將覆蓋防止事件被觸發的文本。 –

+0

嘗試將此添加到您的文本框標記:OnTextChanged =「txtDate_TextChanged」。 – N0Alias

+0

@NoAlias:在VB.NET中不需要使用「處理txtDate.TextChanged」。 –

回答

0

您指定爲您的文本框ReadOnly="true"我注意到。在這種情況下,我不會期望任何TextChanged事件。只讀in the MSDN docs

相關問題