textChanged事件没有触发,我有autopostback = true

时间:2013-06-06 09:05:08

标签: asp.net vb.net

我声明了一个文本框事件,但它没有触发。我已经在SO中看到了其他答案但是所有人都说autopostback属性是真的,我有它

我的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

5 个答案:

答案 0 :(得分:3)

您应该像这样定义文本框(请参阅OnTextChanged="txtDia_TextChanged"正在添加):

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

请记住,此事件只会在onblur(焦点从该文本框中移除)上升。

答案 1 :(得分:2)

在你的aspx中你应该写

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

答案 2 :(得分:1)

如果覆盖codebehind中的文本,则不会触发事件。例如,如果您将控件数据绑定到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

答案 3 :(得分:1)

法格尔所说的是正确的。

我在验证日期和使用jquery datepicker时遇到了同样的问题。在填充框之后,我使用下面的方法来激活验证例程。所以从技术上讲,他们一次性发射两次,一次是在文本框失去焦点到日期选择器之后,然后再次在我的代码在datepicker填充文本框之后触发。最好是禁用onblur事件并直接从下面调用,但在我的项目中是不可能的。

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

您可以通过禁用自动回发并通过onSelect事件手动触发来使用此变体。

答案 4 :(得分:0)

您需要指定在触发事件时要调用的方法,如下所示:

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

注意:

OnTextChanged="txtDia_TextChanged"
相关问题