我有以下代码(经过简化以进行测试):
<asp:TextBox ID="search_TB" runat="server" AutoPostBack="true" OnTextChanged="search_TB_TextChanged"></asp:TextBox>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="up" runat="server">
<Triggers><asp:AsyncPostBackTrigger ControlID="search_TB" /></Triggers>
<ContentTemplate>
<asp:ListView ID="lv" runat="server">
<ItemTemplate>
<div class="text-danger"><%# Eval("name") %></div>
</ItemTemplate>
</asp:ListView>
</ContentTemplate>
</asp:UpdatePanel>
我试图在TextBox中更改文本时异步更新ListView。我正在搜索,我已经尝试了很长时间,但是没有很好的消息来源。你们能帮我吗?
下一步是什么?如果AutoPostBack为true,则OnTextChanged除了完全刷新以外什么都不做:
protected void search_TB_TextChanged(object sender, EventArgs e)
{
List<Food> foods = SqlChannel.ListFood().Where(x => x.name.ToLower().Contains(search_TB.Text.ToLower())).ToList();
lv.DataSource = foods;
lv.DataBind();
}
}
我也无法使Page_Load异步:
if (!IsPostBack)
{
List<Food> foods = SqlChannel.ListFood().Where(x => x.name.ToLower().Contains(search_TB.Text.ToLower())).OrderBy(x => x.name).ToList();
lv.DataSource = foods;
lv.DataBind();
}
另一件事:如果不仅在TextBox失去焦点或诸如此类的东西之后刷新ONKEYUP,那将是很棒的事情。
谢谢。