如果您执行以下操作,您可以触发 TextChanged 事件:
<asp:DataGrid ID="DataGrid1" runat="server" AutoGenerateColumns="False"
onitemdatabound="DataGrid1_ItemDataBound">
<Columns>
<asp:TemplateColumn HeaderText="Test">
<ItemTemplate>
<asp:TextBox OnTextChanged="txtBox_TextChanged" ID="TextBox1" runat="server" AutoPostBack="True"></asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="Name" HeaderText="Test 1"></asp:BoundColumn>
</Columns>
</asp:DataGrid>
您会注意到我设置了以下属性: AutoPostBack="True" 我还手动将 OnTextChanged="txtBox_TextChanged" 添加到文本框中。
在我后面的代码中,我有:
protected void txtBox_TextChanged(object sender, EventArgs e)
{
TextBox txtBox = (TextBox)sender;
Label1.Text = txtBox.Text;
}
触发事件的唯一方法是您在键入后失去对文本框的关注。
需要考虑的要点:这将导致回发,因此 Ajax 可能是保持用户体验良好的好方法。您需要确保将 DataBind() 包装在 if (!IsPostBack) 中
希望这可以帮助!