0

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

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

5 回答 5

3

你应该像这样定义你的文本框(见OnTextChanged="txtDia_TextChanged"被添加):

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

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

于 2013-06-06T09:09:39.663 回答
2

在你的 aspx 中你应该写

<asp:TextBox runat="server" ID="txtDia" Width="120px" Height="20px" 
                AutoPostBack="True" CssClass="textbox" OnTextChanged="txtDia_TextChanged"/>
于 2013-06-06T09:10:08.787 回答
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
于 2013-06-06T09:09:08.460 回答
1

方格说的是对的。

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

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

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

于 2013-06-06T11:33:52.797 回答
0

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

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

笔记:

OnTextChanged="txtDia_TextChanged"
于 2013-06-06T09:12:30.900 回答