2013-06-06 64 views
0

我有一個textbox事件被聲明,但它不會觸發。我已經看到了,這樣其他的答案,但所有的人說,AutoPostBack屬性一直是真的,我有它textChanged事件不會觸發,我有autopostback = true

我的aspx

<asp:ScriptManager ID="ScriptManager2" runat="server" />  
      <asp:TextBox runat="server" ID="txtDia" Width="120px" Height="20px" 
       AutoPostBack="True" CssClass="textbox" OnTextChanged="txtDia_TextChanged"/> 
      <Juice:Datepicker ID="Datepicker2" runat="server" TargetControlID="txtDia" 
       DateFormat="dd/mm/yy" 
       MonthNames="Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octubre,Noviembre,Diciembre" 
       MonthNamesShort="Ene,Feb,Mar,Abr,May,Jun,Jul,Ago,Sep,Oct,Nov,Dic," 
       AutoPostBack="True" /></td> 

和我aspx.vb

Protected Sub txtDia_TextChanged(sender As Object, e As System.EventArgs) Handles   txtDia.TextChanged 
     CargarDatos() 
End Sub 
+0

好的我認爲問題是與我的datepicker控件,因爲與正常的文本框,它效果很好。對不起,您的時間 – Mikelon85

+0

它是否在'UpdatePanel'下? –

+0

不,我已經編輯了問題 – Mikelon85

回答

1

事件是如果您在代碼隱藏中覆蓋文本,則不會觸發。因此,舉例來說,如果你的數據綁定控件,其中TextBox坐在

你應該這樣只有If Not IsPostBack

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostback) 
    { 
     DataBindAllControls(); // including your textbox 
    } 
} 

編輯:對不起,這裏VB.NET:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
    If Not IsPostBack Then 
     DataBindAllControls() ' including your textbox 
    Else 
End Sub 
+0

感謝您的答案,但它不工作 – Mikelon85

+0

我使用txtdia.databind()的順序DataBindAllControls,因爲它不存在 – Mikelon85

3

你應該像這樣定義你的文本框(見OnTextChanged="txtDia_TextChanged"被添加):

<asp:TextBox OnTextChanged="txtDia_TextChanged" 
       runat="server" ID="txtDia" Width="120px" Height="20px" 
       AutoPostBack="True" CssClass="textbox"/> 

請記住,這個事件只會導致onblur(焦點從該文本框中移除)。

+1

這是不必要的VB.NET與'處理'關鍵詞。 –

+0

我和設計師一起做。現在我寫OnTextChanged =「txtDia_TextChanged」,但它不起作用 – Mikelon85

+0

@ Mikelon85你怎麼知道它不工作?應該發生什麼,發生了什麼?只是要清楚:在你打字時,回發不會升高。您必須從該字段中刪除焦點以提升回發事件。 –

2

在你的aspx,你應該寫

<asp:TextBox runat="server" ID="txtDia" Width="120px" Height="20px" 
       AutoPostBack="True" CssClass="textbox" OnTextChanged="txtDia_TextChanged"/> 
0

你需要指定的方法被調用時,事件被觸發,像這樣:

<asp:TextBox runat="server" ID="txtDia" Width="120px" Height="20px" OnTextChanged="txtDia_TextChanged" AutoPostBack="True" CssClass="textbox"/> 

注:

OnTextChanged="txtDia_TextChanged" 
1

FAngel說的是正確的。

我在驗證日期和使用jquery datepicker時遇到了同樣的問題。我用下面的代碼在盒子填充完成後觸發驗證程序。所以在技術上,他們開了兩次,一次在文本框失去了對日期選擇器的焦點之後,然後再次在datepicker填充了文本框後觸發了代碼。最好禁用onblur事件並直接從下面調用,但在我的項目中不可行。

$('.datePicker').each(function() { 
    $(this).datepicker({ 
      onSelect: function() { 
       $(this).trigger('blur'); 
      } 
    }); 
}); 

您可以通過禁用自動回發並通過onSelect事件手動觸發它來使用此變體。

相關問題