我有一个GridView,并在其领域的一个文本框:TextChanged事件没有触发
<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>
...
你能告诉我,为什么TextBox_Changed()不会被调用,当我更改文本并按Enter键?我试图在GridView外部放置同样类型的TextBox,并且在那里工作。 谢谢。
我不相信它是有效的ItemTemplate块内。而且看起来你的ID会被重复和破坏。 – Joe
@Joe Tuskan不,不会重复。它会根据控制树自动计算 – VMAtm
@Joe Tuskan ID不会影响gridviews的处理。真正的问题是他想要如何处理这些数据,因为这可能会迫使他执行除TextChanged以外的其他操作。他无法用他目前的设计知道他正在编辑哪一行。正如@saeed所说, –