TextChanged事件未触发

时间:2011-07-06 17:32:59

标签: c# asp.net

我的一个字段中有一个GridView和一个TextBox:

<asp:GridView ID="NTSBulkEditGridView" runat="server" AutoGenerateColumns="false" AllowSorting="true" Height="500px"
        DataKeyNames="BookStem" OnRowDataBound="NTSBulkEditGridView_RowDataBound" DataSourceID="NTSSqlDataSource">
<Columns>  
    <asp:TemplateField HeaderText="Priority" SortExpression="Priority">  
        <ItemTemplate>  
            <asp:TextBox ID="txtPriority" runat="server" Text='<%# Eval("Priority") %>' BorderStyle="None" Width="80%" OnTextChanged="TextBox_Changed" AutoPostBack="true"></asp:TextBox>  
            <asp:CompareValidator ID="PriorityCompareValidator" runat="server" ControlToValidate="txtPriority" Display="Dynamic" ErrorMessage="Priority must be an integer!" Text="*" Operator="DataTypeCheck" Type="Integer" ValidationGroup="InsertUpdateNewTitlesStatusValidation" ></asp:CompareValidator>
        </ItemTemplate>
    </asp:TemplateField>  

...

你能否告诉我为什么在更改文本并按Enter键时从不调用TextBox_Changed()?我试图将相同类型的TextBox放在GridView之外,并且它可以工作。 感谢。

1 个答案:

答案 0 :(得分:1)

ASP.NET TextBox的TextChanged转换为blur JavaScript事件。当输入元素的文本发生更改且输入元素失去焦点时,会发生blur。尝试更改文本,但不要按回车键。只需点击TAB键即可转到下一个字段。是否发回消息?

更新

好吧,我看到了这个链接。两件事情。首先,如果您注意到,它可以追溯到2005年和ASP.NET 2.0,我们都知道计算机世界中的6年意味着60年。所以这篇文章现在已经过时了。其次,有时一种模式只存在于文章中,而你很少在真正的生产系统中看到它。您在网上看到了多少批量操作?他们有什么类型的?例如,考虑使用Gmail或Yahoo邮件。您可以一次性将20或30或X个电子邮件标记为已读。但是,你能一步回复20封邮件吗?不,只是因为它没有意义。我从未在网络世界的文本框中看到批量操作。我认为你最好坚持使用AJAX,具有更好的性能和更多的用户接受度。 :)