2

我有一个带有压延扩展器的文本框:

<asp:TextBox ID="customDateTo" runat="server" AutoPostBack="true" OnSelectionChanged="customDateFrom_SelectionChanged"></asp:TextBox>
<ajaxToolkit:CalendarExtender ID="toCalendarExtender" TargetControlID="customDateTo" runat="server"></ajaxToolkit:CalendarExtender>

AutoPostBack="true"如您所见,我已经OnSelectionChanged="customDateFrom_SelectionChanged分配给文本框。

但是,我的方法没有任何响应:

protected void customDateFrom_SelectionChanged(object sender, EventArgs e)
{
    System.Diagnostics.Debug.WriteLine("Do Something");
}

当我更改文本时,我确实得到了回发,但该方法中没有任何内容正在执行。为什么会发生这种情况,我该如何解决?

4

3 回答 3

8

对于TextBox,我认为应该是;

OnTextChanged="customDateFrom_SelectionChanged"

不是

OnSelectionChanged="customDateFrom_SelectionChanged"
于 2013-10-15T14:28:27.980 回答
3

我假设您想处理TextBox'TextChanged事件。SelectionChanged是一个在 ASP.NET 中不存在的 winforms 事件。

<asp:TextBox ID="customDateTo" runat="server" 
   AutoPostBack="true" OnTextChanged="customDateFrom_TextChanged">
</asp:TextBox>

当用户更改其中的文本并离开TextBox.

protected void customDateFrom_TextChanged(object sender, EventArgs e)
{
    System.Diagnostics.Debug.WriteLine("Do Something");
}

不触发事件的另一个原因是如果您在TextBox触发事件之前绑定了数据(fe in Page_Load)。然后你应该检查IsPostBackif(!IsPostBack)DataBindTextBox();

于 2013-10-15T14:30:31.863 回答
1

您应该处理TextBox.TextChanged 事件..

例子:

 <asp:TextBox ID="TextBox1" runat="server" AutoPostBack="True" 
            ontextchanged="TextBox1_TextChanged">

// 服务器端事件:

protected void TextBox1_TextChanged(object sender, EventArgs e)
{
   Label1.Text = Server.HtmlEncode(TextBox1.Text);
}

请参阅: Asp.Net 文本框 TextChanged 事件未触发

于 2013-10-15T14:30:24.643 回答